From 320b4d1934eb21cc0d58c4a82561ced8e68fc18e Mon Sep 17 00:00:00 2001
From: SmallChi <564952747@qq.com>
Date: Sun, 2 Jun 2019 18:21:26 +0800
Subject: [PATCH] =?UTF-8?q?1.=E5=88=A0=E9=99=A4=E5=AD=90=E6=A8=A1=E5=9D=97?=
=?UTF-8?q?=E4=BD=BF=E7=94=A8nuget=E6=96=B9=E5=BC=8F=E5=BC=95=E7=94=A8=202?=
=?UTF-8?q?.=E5=A2=9E=E5=8A=A0tcp=E7=BB=9F=E4=B8=80=E5=87=BA=E5=8F=A3?=
=?UTF-8?q?=E7=BC=96=E7=A0=81=E5=99=A8=203.=E4=BF=AE=E6=94=B9=E7=BB=9F?=
=?UTF-8?q?=E4=B8=80=E7=9A=84=E5=BA=94=E7=AD=94=E6=8E=A5=E5=8F=A3=204.?=
=?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8C=85=E8=A3=85udp=E7=BC=96=E7=A0=81?=
=?UTF-8?q?=E5=99=A8=205.=E4=BF=AE=E6=94=B9udp=E7=AB=AF=E5=8F=A3=E4=B8=BA8?=
=?UTF-8?q?08=206.=E5=A2=9E=E5=8A=A0=E4=B8=8A=E4=B8=8B=E8=A1=8C=E6=95=B0?=
=?UTF-8?q?=E6=8D=AE=E5=8C=85=E6=97=A5=E5=BF=97=E6=8E=A5=E5=8F=A3=207.?=
=?UTF-8?q?=E4=BF=AE=E6=94=B9webapi=E8=BF=94=E5=9B=9E=E6=95=B0=E6=8D=AE?=
=?UTF-8?q?=E5=A4=AA=E5=A4=9A=E5=AF=BC=E8=87=B4=E8=A2=AB=E6=88=AA=E6=96=AD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitmodules | 3 --
README.md | 2 ++
.../Enums/JT808TransportProtocolType.cs | 15 +++++++++
.../IJT808DownlinkPacket.cs | 22 +++++++++++++
.../IJT808UplinkPacket.cs | 19 +++++++++++
.../JT808.DotNetty.Abstractions.csproj | 4 +--
.../JT808.DotNetty.Client.csproj | 9 ++---
.../Codecs/JT808TcpEncoder.cs | 13 ++++++--
.../Configurations/JT808Configuration.cs | 2 +-
.../Impls/JT808DatagramPacketImpl.cs | 33 +++++++++++++++++++
.../Impls/JT808DownlinkPacketEmptyImpl.cs | 17 ++++++++++
.../Impls/JT808UplinkPacketEmptyImpl.cs | 17 ++++++++++
.../Interfaces/IJT808DatagramPacket.cs | 13 ++++++++
.../JT808.DotNetty.Core.csproj | 6 ++--
.../JT808CoreDotnettyExtensions.cs | 4 +++
.../Jobs/JT808TcpAtomicCouterResetDailyJob.cs | 5 +--
.../Jobs/JT808TcpTrafficResetDailyJob.cs | 5 +--
.../Jobs/JT808UdpAtomicCouterResetDailyJob.cs | 5 +--
.../Jobs/JT808UdpTrafficResetDailyJob.cs | 5 +--
.../JT808AtomicCounterServiceFactory.cs | 8 ++---
.../Services/JT808TrafficServiceFactory.cs | 8 ++---
.../JT808UnificationUdpSendService.cs | 9 +++--
.../Handlers/JT808TcpServerHandler.cs | 12 +++++--
.../JT808.DotNetty.Tcp.csproj | 4 +--
.../JT808DotNettyWebApiTest.cs | 11 +++----
.../Handlers/JT808UdpServerHandler.cs | 31 +++++++++++++----
.../JT808.DotNetty.Udp.csproj | 4 +--
.../JT808UdpDotnettyExtensions.cs | 3 ++
.../JT808MsgIdDefaultWebApiHandler.cs | 18 +++++-----
.../JT808.DotNetty.WebApi.csproj | 4 +--
.../JT808.DotNetty.WebApiClientTool.csproj | 6 ++--
src/JT808.DotNetty.sln | 9 -----
src/JT808.Protocol | 1 -
33 files changed, 246 insertions(+), 81 deletions(-)
delete mode 100644 .gitmodules
create mode 100644 src/JT808.DotNetty.Abstractions/Enums/JT808TransportProtocolType.cs
create mode 100644 src/JT808.DotNetty.Abstractions/IJT808DownlinkPacket.cs
create mode 100644 src/JT808.DotNetty.Abstractions/IJT808UplinkPacket.cs
create mode 100644 src/JT808.DotNetty.Core/Impls/JT808DatagramPacketImpl.cs
create mode 100644 src/JT808.DotNetty.Core/Impls/JT808DownlinkPacketEmptyImpl.cs
create mode 100644 src/JT808.DotNetty.Core/Impls/JT808UplinkPacketEmptyImpl.cs
create mode 100644 src/JT808.DotNetty.Core/Interfaces/IJT808DatagramPacket.cs
delete mode 160000 src/JT808.Protocol
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 7e62ef9..0000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "src/JT808.Protocol"]
- path = src/JT808.Protocol
- url = https://github.com/SmallChi/JT808.git
diff --git a/README.md b/README.md
index 93dfb12..ccff203 100644
--- a/README.md
+++ b/README.md
@@ -43,6 +43,8 @@
|:------:|:------|:------|
| IJT808SessionPublishing| 会话通知(在线/离线)| 有些超长待机的设备,不会实时保持连接,那么通过平台下发的命令是无法到达的,这时候就需要设备一上线,就即时通知服务去处理,然后在即时的下发消息到设备。|
| IJT808SourcePackageDispatcher| 原包分发器| 需要将源数据转给其他平台|
+| IJT808UplinkPacket| 上行数据包处理接口| 平台需要查看网关的上行数据日志(可以配合InfluxDB使用)|
+| IJT808DownlinkPacket| 下行数据包处理接口| 平台需要查看网关的下行数据日志(可以配合InfluxDB使用)|
> 只要实现IJT808SessionPublishing接口的任意一款MQ都能实现该功能。
diff --git a/src/JT808.DotNetty.Abstractions/Enums/JT808TransportProtocolType.cs b/src/JT808.DotNetty.Abstractions/Enums/JT808TransportProtocolType.cs
new file mode 100644
index 0000000..0134bb8
--- /dev/null
+++ b/src/JT808.DotNetty.Abstractions/Enums/JT808TransportProtocolType.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT808.DotNetty.Abstractions.Enums
+{
+ ///
+ /// 传输协议类型
+ ///
+ public enum JT808TransportProtocolType
+ {
+ tcp=1,
+ udp = 2
+ }
+}
diff --git a/src/JT808.DotNetty.Abstractions/IJT808DownlinkPacket.cs b/src/JT808.DotNetty.Abstractions/IJT808DownlinkPacket.cs
new file mode 100644
index 0000000..9969bd0
--- /dev/null
+++ b/src/JT808.DotNetty.Abstractions/IJT808DownlinkPacket.cs
@@ -0,0 +1,22 @@
+using JT808.DotNetty.Abstractions.Enums;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace JT808.DotNetty.Abstractions
+{
+ ///
+ /// 下行数据包处理接口
+ ///
+ public interface IJT808DownlinkPacket
+ {
+ ///
+ ///
+ ///
+ /// 数据包
+ /// 协议类型:tcp/udp
+ ///
+ Task ProcessorAsync(byte[] data, JT808TransportProtocolType transportProtocolType);
+ }
+}
diff --git a/src/JT808.DotNetty.Abstractions/IJT808UplinkPacket.cs b/src/JT808.DotNetty.Abstractions/IJT808UplinkPacket.cs
new file mode 100644
index 0000000..5198855
--- /dev/null
+++ b/src/JT808.DotNetty.Abstractions/IJT808UplinkPacket.cs
@@ -0,0 +1,19 @@
+using JT808.DotNetty.Abstractions.Enums;
+using System.Threading.Tasks;
+
+namespace JT808.DotNetty.Abstractions
+{
+ ///
+ /// 上行数据包处理接口
+ ///
+ public interface IJT808UplinkPacket
+ {
+ ///
+ ///
+ ///
+ /// 数据包
+ /// 传输协议类型
+ ///
+ Task ProcessorAsync(byte[] data, JT808TransportProtocolType transportProtocolType);
+ }
+}
diff --git a/src/JT808.DotNetty.Abstractions/JT808.DotNetty.Abstractions.csproj b/src/JT808.DotNetty.Abstractions/JT808.DotNetty.Abstractions.csproj
index 359146f..123bd14 100644
--- a/src/JT808.DotNetty.Abstractions/JT808.DotNetty.Abstractions.csproj
+++ b/src/JT808.DotNetty.Abstractions/JT808.DotNetty.Abstractions.csproj
@@ -12,9 +12,9 @@
false
https://github.com/SmallChi/JT808DotNetty
https://github.com/SmallChi/JT808DotNetty
- https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
+ https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
true
- 1.1.1
+ 1.2.0
diff --git a/src/JT808.DotNetty.Client/JT808.DotNetty.Client.csproj b/src/JT808.DotNetty.Client/JT808.DotNetty.Client.csproj
index e644ef6..48870ae 100644
--- a/src/JT808.DotNetty.Client/JT808.DotNetty.Client.csproj
+++ b/src/JT808.DotNetty.Client/JT808.DotNetty.Client.csproj
@@ -12,23 +12,20 @@
false
https://github.com/SmallChi/JT808DotNetty
https://github.com/SmallChi/JT808DotNetty
- https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
+ https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
true
- 1.1.1
+ 1.2.0
+
-
-
-
-
diff --git a/src/JT808.DotNetty.Core/Codecs/JT808TcpEncoder.cs b/src/JT808.DotNetty.Core/Codecs/JT808TcpEncoder.cs
index dbd143b..21bb4e5 100644
--- a/src/JT808.DotNetty.Core/Codecs/JT808TcpEncoder.cs
+++ b/src/JT808.DotNetty.Core/Codecs/JT808TcpEncoder.cs
@@ -5,6 +5,8 @@ using DotNetty.Transport.Channels;
using JT808.DotNetty.Core.Interfaces;
using Microsoft.Extensions.Logging;
using JT808.DotNetty.Core.Services;
+using JT808.DotNetty.Abstractions;
+using JT808.DotNetty.Abstractions.Enums;
namespace JT808.DotNetty.Core.Codecs
{
@@ -17,10 +19,15 @@ namespace JT808.DotNetty.Core.Codecs
private readonly JT808TrafficService jT808TrafficService;
- public JT808TcpEncoder(ILoggerFactory loggerFactory, JT808TrafficServiceFactory jT808TrafficServiceFactory)
+ private readonly IJT808DownlinkPacket jT808DownlinkPacket;
+
+ public JT808TcpEncoder(ILoggerFactory loggerFactory,
+ JT808TrafficServiceFactory jT808TrafficServiceFactory,
+ IJT808DownlinkPacket jT808DownlinkPacket)
{
logger = loggerFactory.CreateLogger();
- this.jT808TrafficService = jT808TrafficServiceFactory.Create(Core.Enums.JT808ModeType.Tcp);
+ this.jT808TrafficService = jT808TrafficServiceFactory.Create(JT808TransportProtocolType.tcp);
+ this.jT808DownlinkPacket = jT808DownlinkPacket;
}
protected override void Encode(IChannelHandlerContext context, IJT808Reply message, IByteBuffer output)
@@ -31,6 +38,7 @@ namespace JT808.DotNetty.Core.Codecs
{
var sendData = JT808Serializer.Serialize(message.Package, message.MinBufferSize);
jT808TrafficService.SendSize(sendData.Length);
+ jT808DownlinkPacket.ProcessorAsync(sendData, JT808TransportProtocolType.tcp);
output.WriteBytes(Unpooled.WrappedBuffer(sendData));
}
catch (JT808.Protocol.Exceptions.JT808Exception ex)
@@ -45,6 +53,7 @@ namespace JT808.DotNetty.Core.Codecs
else if (message.HexData != null)
{
jT808TrafficService.SendSize(message.HexData.Length);
+ jT808DownlinkPacket.ProcessorAsync(message.HexData, JT808TransportProtocolType.tcp);
output.WriteBytes(Unpooled.WrappedBuffer(message.HexData));
}
}
diff --git a/src/JT808.DotNetty.Core/Configurations/JT808Configuration.cs b/src/JT808.DotNetty.Core/Configurations/JT808Configuration.cs
index 48f1975..e732647 100644
--- a/src/JT808.DotNetty.Core/Configurations/JT808Configuration.cs
+++ b/src/JT808.DotNetty.Core/Configurations/JT808Configuration.cs
@@ -8,7 +8,7 @@ namespace JT808.DotNetty.Core.Configurations
{
public int TcpPort { get; set; } = 808;
- public int UdpPort { get; set; } = 818;
+ public int UdpPort { get; set; } = 808;
public int QuietPeriodSeconds { get; set; } = 1;
diff --git a/src/JT808.DotNetty.Core/Impls/JT808DatagramPacketImpl.cs b/src/JT808.DotNetty.Core/Impls/JT808DatagramPacketImpl.cs
new file mode 100644
index 0000000..71421f2
--- /dev/null
+++ b/src/JT808.DotNetty.Core/Impls/JT808DatagramPacketImpl.cs
@@ -0,0 +1,33 @@
+using DotNetty.Buffers;
+using DotNetty.Transport.Channels.Sockets;
+using JT808.DotNetty.Abstractions;
+using JT808.DotNetty.Abstractions.Enums;
+using JT808.DotNetty.Core.Interfaces;
+using JT808.DotNetty.Core.Services;
+using System;
+using System.Collections.Generic;
+using System.Net;
+using System.Text;
+
+namespace JT808.DotNetty.Core.Impls
+{
+ class JT808DatagramPacketImpl : IJT808DatagramPacket
+ {
+ private readonly JT808TrafficService jT808TrafficService;
+ private readonly IJT808DownlinkPacket jT808DownlinkPacket;
+ public JT808DatagramPacketImpl(
+ JT808TrafficServiceFactory jT808TrafficServiceFactory,
+ IJT808DownlinkPacket jT808DownlinkPacket)
+ {
+ this.jT808DownlinkPacket = jT808DownlinkPacket;
+ this.jT808TrafficService = jT808TrafficServiceFactory.Create(JT808TransportProtocolType.udp);
+ }
+
+ public DatagramPacket Create(byte[] message, EndPoint recipient)
+ {
+ jT808TrafficService.SendSize(message.Length);
+ jT808DownlinkPacket.ProcessorAsync(message, JT808TransportProtocolType.udp);
+ return new DatagramPacket(Unpooled.WrappedBuffer(message), recipient);
+ }
+ }
+}
diff --git a/src/JT808.DotNetty.Core/Impls/JT808DownlinkPacketEmptyImpl.cs b/src/JT808.DotNetty.Core/Impls/JT808DownlinkPacketEmptyImpl.cs
new file mode 100644
index 0000000..7ba5593
--- /dev/null
+++ b/src/JT808.DotNetty.Core/Impls/JT808DownlinkPacketEmptyImpl.cs
@@ -0,0 +1,17 @@
+using JT808.DotNetty.Abstractions;
+using JT808.DotNetty.Abstractions.Enums;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace JT808.DotNetty.Core.Impls
+{
+ class JT808DownlinkPacketEmptyImpl : IJT808DownlinkPacket
+ {
+ public Task ProcessorAsync(byte[] data, JT808TransportProtocolType transportProtocolType)
+ {
+ return Task.CompletedTask;
+ }
+ }
+}
diff --git a/src/JT808.DotNetty.Core/Impls/JT808UplinkPacketEmptyImpl.cs b/src/JT808.DotNetty.Core/Impls/JT808UplinkPacketEmptyImpl.cs
new file mode 100644
index 0000000..11a1b04
--- /dev/null
+++ b/src/JT808.DotNetty.Core/Impls/JT808UplinkPacketEmptyImpl.cs
@@ -0,0 +1,17 @@
+using JT808.DotNetty.Abstractions;
+using JT808.DotNetty.Abstractions.Enums;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace JT808.DotNetty.Core.Impls
+{
+ class JT808UplinkPacketEmptyImpl : IJT808UplinkPacket
+ {
+ public Task ProcessorAsync(byte[] data, JT808TransportProtocolType transportProtocolType)
+ {
+ return Task.CompletedTask;
+ }
+ }
+}
diff --git a/src/JT808.DotNetty.Core/Interfaces/IJT808DatagramPacket.cs b/src/JT808.DotNetty.Core/Interfaces/IJT808DatagramPacket.cs
new file mode 100644
index 0000000..70e2a4b
--- /dev/null
+++ b/src/JT808.DotNetty.Core/Interfaces/IJT808DatagramPacket.cs
@@ -0,0 +1,13 @@
+using DotNetty.Transport.Channels.Sockets;
+using System.Net;
+
+namespace JT808.DotNetty.Core.Interfaces
+{
+ ///
+ /// 基于udp的创建发送包
+ ///
+ interface IJT808DatagramPacket
+ {
+ DatagramPacket Create(byte[] message, EndPoint recipient);
+ }
+}
diff --git a/src/JT808.DotNetty.Core/JT808.DotNetty.Core.csproj b/src/JT808.DotNetty.Core/JT808.DotNetty.Core.csproj
index 7fcafee..f42f1f4 100644
--- a/src/JT808.DotNetty.Core/JT808.DotNetty.Core.csproj
+++ b/src/JT808.DotNetty.Core/JT808.DotNetty.Core.csproj
@@ -12,9 +12,9 @@
false
https://github.com/SmallChi/JT808DotNetty
https://github.com/SmallChi/JT808DotNetty
- https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
+ https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
true
- 1.1.1
+ 1.2.0
@@ -25,6 +25,7 @@
+
@@ -33,7 +34,6 @@
-
diff --git a/src/JT808.DotNetty.Core/JT808CoreDotnettyExtensions.cs b/src/JT808.DotNetty.Core/JT808CoreDotnettyExtensions.cs
index d48cac2..edaa37c 100644
--- a/src/JT808.DotNetty.Core/JT808CoreDotnettyExtensions.cs
+++ b/src/JT808.DotNetty.Core/JT808CoreDotnettyExtensions.cs
@@ -55,6 +55,8 @@ namespace JT808.DotNetty.Core
}
serviceDescriptors.Configure(configuration.GetSection("JT808Configuration"));
serviceDescriptors.TryAddSingleton();
+ serviceDescriptors.TryAddSingleton();
+ serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
@@ -80,6 +82,8 @@ namespace JT808.DotNetty.Core
}
serviceDescriptors.Configure(jt808Options);
serviceDescriptors.TryAddSingleton();
+ serviceDescriptors.TryAddSingleton();
+ serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
diff --git a/src/JT808.DotNetty.Core/Jobs/JT808TcpAtomicCouterResetDailyJob.cs b/src/JT808.DotNetty.Core/Jobs/JT808TcpAtomicCouterResetDailyJob.cs
index 2211981..54b438b 100644
--- a/src/JT808.DotNetty.Core/Jobs/JT808TcpAtomicCouterResetDailyJob.cs
+++ b/src/JT808.DotNetty.Core/Jobs/JT808TcpAtomicCouterResetDailyJob.cs
@@ -1,4 +1,5 @@
-using JT808.DotNetty.Core.Services;
+using JT808.DotNetty.Abstractions.Enums;
+using JT808.DotNetty.Core.Services;
using Microsoft.Extensions.Logging;
using System.Threading;
using System.Threading.Tasks;
@@ -15,7 +16,7 @@ namespace JT808.DotNetty.Core.Jobs
JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory,
ILoggerFactory loggerFactory)
{
- _jT808AtomicCounterService = jT808AtomicCounterServiceFactory.Create(Enums.JT808ModeType.Tcp);
+ _jT808AtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.tcp);
_logger =loggerFactory.CreateLogger();
}
diff --git a/src/JT808.DotNetty.Core/Jobs/JT808TcpTrafficResetDailyJob.cs b/src/JT808.DotNetty.Core/Jobs/JT808TcpTrafficResetDailyJob.cs
index f90fc75..5e5dcad 100644
--- a/src/JT808.DotNetty.Core/Jobs/JT808TcpTrafficResetDailyJob.cs
+++ b/src/JT808.DotNetty.Core/Jobs/JT808TcpTrafficResetDailyJob.cs
@@ -1,4 +1,5 @@
-using JT808.DotNetty.Core.Services;
+using JT808.DotNetty.Abstractions.Enums;
+using JT808.DotNetty.Core.Services;
using Microsoft.Extensions.Logging;
using System.Threading;
using System.Threading.Tasks;
@@ -15,7 +16,7 @@ namespace JT808.DotNetty.Core.Jobs
JT808TrafficServiceFactory jT808TrafficServiceFactory,
ILoggerFactory loggerFactory)
{
- _jT808TrafficService = jT808TrafficServiceFactory.Create( Enums.JT808ModeType.Tcp);
+ _jT808TrafficService = jT808TrafficServiceFactory.Create(JT808TransportProtocolType.tcp);
_logger =loggerFactory.CreateLogger();
}
diff --git a/src/JT808.DotNetty.Core/Jobs/JT808UdpAtomicCouterResetDailyJob.cs b/src/JT808.DotNetty.Core/Jobs/JT808UdpAtomicCouterResetDailyJob.cs
index 9e12afa..1cd668f 100644
--- a/src/JT808.DotNetty.Core/Jobs/JT808UdpAtomicCouterResetDailyJob.cs
+++ b/src/JT808.DotNetty.Core/Jobs/JT808UdpAtomicCouterResetDailyJob.cs
@@ -1,4 +1,5 @@
-using JT808.DotNetty.Core.Services;
+using JT808.DotNetty.Abstractions.Enums;
+using JT808.DotNetty.Core.Services;
using Microsoft.Extensions.Logging;
using System.Threading;
using System.Threading.Tasks;
@@ -15,7 +16,7 @@ namespace JT808.DotNetty.Core.Jobs
JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory,
ILoggerFactory loggerFactory)
{
- _jT808AtomicCounterService = jT808AtomicCounterServiceFactory.Create(Enums.JT808ModeType.Udp);
+ _jT808AtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.udp);
_logger =loggerFactory.CreateLogger();
}
diff --git a/src/JT808.DotNetty.Core/Jobs/JT808UdpTrafficResetDailyJob.cs b/src/JT808.DotNetty.Core/Jobs/JT808UdpTrafficResetDailyJob.cs
index f9b9891..620a80f 100644
--- a/src/JT808.DotNetty.Core/Jobs/JT808UdpTrafficResetDailyJob.cs
+++ b/src/JT808.DotNetty.Core/Jobs/JT808UdpTrafficResetDailyJob.cs
@@ -1,4 +1,5 @@
-using JT808.DotNetty.Core.Services;
+using JT808.DotNetty.Abstractions.Enums;
+using JT808.DotNetty.Core.Services;
using Microsoft.Extensions.Logging;
using System.Threading;
using System.Threading.Tasks;
@@ -15,7 +16,7 @@ namespace JT808.DotNetty.Core.Jobs
JT808TrafficServiceFactory jT808TrafficServiceFactory,
ILoggerFactory loggerFactory)
{
- _jT808TrafficService = jT808TrafficServiceFactory.Create(Enums.JT808ModeType.Udp);
+ _jT808TrafficService = jT808TrafficServiceFactory.Create(JT808TransportProtocolType.udp);
_logger =loggerFactory.CreateLogger();
}
diff --git a/src/JT808.DotNetty.Core/Services/JT808AtomicCounterServiceFactory.cs b/src/JT808.DotNetty.Core/Services/JT808AtomicCounterServiceFactory.cs
index 7878ac4..916befb 100644
--- a/src/JT808.DotNetty.Core/Services/JT808AtomicCounterServiceFactory.cs
+++ b/src/JT808.DotNetty.Core/Services/JT808AtomicCounterServiceFactory.cs
@@ -1,4 +1,4 @@
-using JT808.DotNetty.Core.Enums;
+using JT808.DotNetty.Abstractions.Enums;
using System;
using System.Collections.Concurrent;
@@ -6,14 +6,14 @@ namespace JT808.DotNetty.Core.Services
{
public class JT808AtomicCounterServiceFactory
{
- private readonly ConcurrentDictionary cache;
+ private readonly ConcurrentDictionary cache;
public JT808AtomicCounterServiceFactory()
{
- cache = new ConcurrentDictionary();
+ cache = new ConcurrentDictionary();
}
- public JT808AtomicCounterService Create(JT808ModeType type)
+ public JT808AtomicCounterService Create(JT808TransportProtocolType type)
{
if(cache.TryGetValue(type,out var service))
{
diff --git a/src/JT808.DotNetty.Core/Services/JT808TrafficServiceFactory.cs b/src/JT808.DotNetty.Core/Services/JT808TrafficServiceFactory.cs
index 7d9238f..1e3bc3d 100644
--- a/src/JT808.DotNetty.Core/Services/JT808TrafficServiceFactory.cs
+++ b/src/JT808.DotNetty.Core/Services/JT808TrafficServiceFactory.cs
@@ -1,4 +1,4 @@
-using JT808.DotNetty.Core.Enums;
+using JT808.DotNetty.Abstractions.Enums;
using JT808.DotNetty.Core.Metadata;
using System;
using System.Collections.Concurrent;
@@ -9,14 +9,14 @@ namespace JT808.DotNetty.Core.Services
{
public class JT808TrafficServiceFactory
{
- private readonly ConcurrentDictionary cache;
+ private readonly ConcurrentDictionary cache;
public JT808TrafficServiceFactory()
{
- cache = new ConcurrentDictionary();
+ cache = new ConcurrentDictionary();
}
- public JT808TrafficService Create(JT808ModeType type)
+ public JT808TrafficService Create(JT808TransportProtocolType type)
{
if (cache.TryGetValue(type, out var service))
{
diff --git a/src/JT808.DotNetty.Core/Services/JT808UnificationUdpSendService.cs b/src/JT808.DotNetty.Core/Services/JT808UnificationUdpSendService.cs
index 5a58f83..e8bf963 100644
--- a/src/JT808.DotNetty.Core/Services/JT808UnificationUdpSendService.cs
+++ b/src/JT808.DotNetty.Core/Services/JT808UnificationUdpSendService.cs
@@ -12,13 +12,13 @@ namespace JT808.DotNetty.Internal
{
private readonly JT808UdpSessionManager jT808SessionManager;
- private readonly JT808TrafficService jT808TrafficService;
+ private readonly IJT808DatagramPacket jT808DatagramPacket;
public JT808UnificationUdpSendService(
- JT808TrafficServiceFactory jT808TrafficServiceFactory,
+ IJT808DatagramPacket jT808DatagramPacket,
JT808UdpSessionManager jT808SessionManager)
{
- this.jT808TrafficService = jT808TrafficServiceFactory.Create(Core.Enums.JT808ModeType.Udp);
+ this.jT808DatagramPacket = jT808DatagramPacket;
this.jT808SessionManager = jT808SessionManager;
}
@@ -30,8 +30,7 @@ namespace JT808.DotNetty.Internal
var session = jT808SessionManager.GetSession(terminalPhoneNo);
if (session != null)
{
- jT808TrafficService.SendSize(data.Length);
- session.Channel.WriteAndFlushAsync(new DatagramPacket(Unpooled.WrappedBuffer(data), session.Sender));
+ session.Channel.WriteAndFlushAsync(jT808DatagramPacket.Create(data, session.Sender));
resultDto.Code = JT808ResultCode.Ok;
resultDto.Data = true;
}
diff --git a/src/JT808.DotNetty.Tcp/Handlers/JT808TcpServerHandler.cs b/src/JT808.DotNetty.Tcp/Handlers/JT808TcpServerHandler.cs
index 0c6ca48..1dd7211 100644
--- a/src/JT808.DotNetty.Tcp/Handlers/JT808TcpServerHandler.cs
+++ b/src/JT808.DotNetty.Tcp/Handlers/JT808TcpServerHandler.cs
@@ -9,6 +9,7 @@ using JT808.DotNetty.Core.Handlers;
using JT808.DotNetty.Core.Services;
using JT808.DotNetty.Core.Metadata;
using JT808.DotNetty.Core.Interfaces;
+using JT808.DotNetty.Abstractions.Enums;
namespace JT808.DotNetty.Tcp.Handlers
{
@@ -29,6 +30,8 @@ namespace JT808.DotNetty.Tcp.Handlers
private readonly JT808TrafficService jT808TrafficService;
+ private readonly IJT808UplinkPacket jT808UplinkPacket;
+
private readonly ILogger logger;
private readonly ILogger unknownLogger;
@@ -38,16 +41,18 @@ namespace JT808.DotNetty.Tcp.Handlers
ILoggerFactory loggerFactory,
JT808TransmitAddressFilterService jT808TransmitAddressFilterService,
IJT808SourcePackageDispatcher jT808SourcePackageDispatcher,
+ IJT808UplinkPacket jT808UplinkPacket,
JT808MsgIdTcpHandlerBase handler,
JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory,
JT808TcpSessionManager jT808SessionManager)
{
- this.jT808TrafficService = jT808TrafficServiceFactory.Create(Core.Enums.JT808ModeType.Tcp);
+ this.jT808TrafficService = jT808TrafficServiceFactory.Create(JT808TransportProtocolType.tcp);
this.jT808TransmitAddressFilterService = jT808TransmitAddressFilterService;
this.handler = handler;
this.jT808SessionManager = jT808SessionManager;
this.jT808SourcePackageDispatcher = jT808SourcePackageDispatcher;
- this.jT808AtomicCounterService = jT808AtomicCounterServiceFactory.Create(Core.Enums.JT808ModeType.Tcp);
+ this.jT808UplinkPacket = jT808UplinkPacket;
+ this.jT808AtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.tcp);
logger = loggerFactory.CreateLogger();
unknownLogger = loggerFactory.CreateLogger("tcp_unknown_msgid");
}
@@ -57,7 +62,8 @@ namespace JT808.DotNetty.Tcp.Handlers
{
try
{
- jT808SourcePackageDispatcher?.SendAsync(msg);
+ jT808SourcePackageDispatcher.SendAsync(msg);
+ jT808UplinkPacket.ProcessorAsync(msg, JT808TransportProtocolType.tcp);
//解析到头部,然后根据具体的消息Id通过队列去进行消费
//要是一定要解析到数据体可以在JT808MsgIdHandlerBase类中根据具体的消息,
//解析具体的消息体,具体调用JT808Serializer.Deserialize
diff --git a/src/JT808.DotNetty.Tcp/JT808.DotNetty.Tcp.csproj b/src/JT808.DotNetty.Tcp/JT808.DotNetty.Tcp.csproj
index 1647bd2..f12d0f1 100644
--- a/src/JT808.DotNetty.Tcp/JT808.DotNetty.Tcp.csproj
+++ b/src/JT808.DotNetty.Tcp/JT808.DotNetty.Tcp.csproj
@@ -12,9 +12,9 @@
false
https://github.com/SmallChi/JT808DotNetty
https://github.com/SmallChi/JT808DotNetty
- https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
+ https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
true
- 1.1.1
+ 1.2.0
diff --git a/src/JT808.DotNetty.Tests/JT808.DotNetty.WebApi.Test/JT808DotNettyWebApiTest.cs b/src/JT808.DotNetty.Tests/JT808.DotNetty.WebApi.Test/JT808DotNettyWebApiTest.cs
index 15c82ed..bbb9014 100644
--- a/src/JT808.DotNetty.Tests/JT808.DotNetty.WebApi.Test/JT808DotNettyWebApiTest.cs
+++ b/src/JT808.DotNetty.Tests/JT808.DotNetty.WebApi.Test/JT808DotNettyWebApiTest.cs
@@ -14,13 +14,12 @@ namespace JT808.DotNetty.WebApi.Test
public JT808DotNettyWebApiTest()
{
-
- var httpApiConfig = new HttpApiConfig
+ HttpApi.Register().ConfigureHttpApiConfig(c =>
{
- HttpHost = new Uri("http://127.0.0.1:12828"+ JT808Constants.JT808WebApiRouteTable.RouteTablePrefix+"/"),
- LoggerFactory = new LoggerFactory(),
- };
- jT808DotNettyWebApi = HttpApiClient.Create(httpApiConfig);
+ c.HttpHost = new Uri("http://127.0.0.1:12828" + JT808Constants.JT808WebApiRouteTable.RouteTablePrefix + "/");
+ c.LoggerFactory = new LoggerFactory();
+ });
+ var api = HttpApi.Resolve();
}
[TestMethod]
diff --git a/src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs b/src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs
index 8a72481..43b75a2 100644
--- a/src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs
+++ b/src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs
@@ -11,6 +11,7 @@ using JT808.DotNetty.Core;
using JT808.DotNetty.Core.Handlers;
using System.Threading.Tasks;
using JT808.DotNetty.Core.Interfaces;
+using JT808.DotNetty.Abstractions.Enums;
namespace JT808.DotNetty.Udp.Handlers
{
@@ -31,33 +32,44 @@ namespace JT808.DotNetty.Udp.Handlers
private readonly JT808TrafficService jT808TrafficService;
+ private readonly IJT808UplinkPacket jT808UplinkPacket;
+
+ private readonly IJT808DatagramPacket jT808DatagramPacket;
+
+ private readonly ILogger unknownLogger;
public JT808UdpServerHandler(
+ IJT808DatagramPacket jT808DatagramPacket,
JT808TrafficServiceFactory jT808TrafficServiceFactory,
ILoggerFactory loggerFactory,
IJT808SourcePackageDispatcher jT808SourcePackageDispatcher,
+ IJT808UplinkPacket jT808UplinkPacket,
JT808MsgIdUdpHandlerBase handler,
JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory,
JT808UdpSessionManager jT808UdpSessionManager)
{
- this.jT808TrafficService = jT808TrafficServiceFactory.Create(Core.Enums.JT808ModeType.Udp);
+ this.jT808DatagramPacket = jT808DatagramPacket;
+ this.jT808TrafficService = jT808TrafficServiceFactory.Create(JT808TransportProtocolType.udp);
this.handler = handler;
this.jT808SourcePackageDispatcher = jT808SourcePackageDispatcher;
- this.jT808AtomicCounterService = jT808AtomicCounterServiceFactory.Create(Core.Enums.JT808ModeType.Udp);
+ this.jT808AtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.udp);
+ this.jT808UplinkPacket = jT808UplinkPacket;
this.jT808UdpSessionManager = jT808UdpSessionManager;
logger = loggerFactory.CreateLogger();
+ unknownLogger = loggerFactory.CreateLogger("udp_unknown_msgid");
}
protected override void ChannelRead0(IChannelHandlerContext ctx, JT808UdpPackage msg)
{
try
{
- jT808SourcePackageDispatcher?.SendAsync(msg.Buffer);
- jT808TrafficService.ReceiveSize(msg.Buffer.Length);
+ jT808SourcePackageDispatcher.SendAsync(msg.Buffer);
+ jT808UplinkPacket.ProcessorAsync(msg.Buffer, JT808TransportProtocolType.udp);
//解析到头部,然后根据具体的消息Id通过队列去进行消费
//要是一定要解析到数据体可以在JT808MsgIdHandlerBase类中根据具体的消息,
//解析具体的消息体,具体调用JT808Serializer.Deserialize
JT808HeaderPackage jT808HeaderPackage = JT808Serializer.Deserialize(msg.Buffer);
jT808AtomicCounterService.MsgSuccessIncrement();
+ jT808TrafficService.ReceiveSize(msg.Buffer.Length);
jT808UdpSessionManager.TryAdd(ctx.Channel, msg.Sender, jT808HeaderPackage.Header.TerminalPhoneNo);
if (logger.IsEnabled(LogLevel.Debug))
{
@@ -69,8 +81,15 @@ namespace JT808.DotNetty.Udp.Handlers
if (jT808Response != null)
{
var sendData = JT808Serializer.Serialize(jT808Response.Package, jT808Response.MinBufferSize);
- jT808TrafficService.SendSize(sendData.Length);
- ctx.WriteAndFlushAsync(new DatagramPacket(Unpooled.WrappedBuffer(sendData), msg.Sender));
+ ctx.WriteAndFlushAsync(jT808DatagramPacket.Create(sendData,msg.Sender));
+ }
+ }
+ else
+ {
+ //未知的消息类型已日志形式输出
+ if (unknownLogger.IsEnabled(LogLevel.Debug))
+ {
+ unknownLogger.LogDebug(ByteBufferUtil.HexDump(msg.Buffer));
}
}
}
diff --git a/src/JT808.DotNetty.Udp/JT808.DotNetty.Udp.csproj b/src/JT808.DotNetty.Udp/JT808.DotNetty.Udp.csproj
index d893348..88e902e 100644
--- a/src/JT808.DotNetty.Udp/JT808.DotNetty.Udp.csproj
+++ b/src/JT808.DotNetty.Udp/JT808.DotNetty.Udp.csproj
@@ -12,9 +12,9 @@
false
https://github.com/SmallChi/JT808DotNetty
https://github.com/SmallChi/JT808DotNetty
- https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
+ https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
true
- 1.1.1
+ 1.2.0
diff --git a/src/JT808.DotNetty.Udp/JT808UdpDotnettyExtensions.cs b/src/JT808.DotNetty.Udp/JT808UdpDotnettyExtensions.cs
index 9081927..dd13dfb 100644
--- a/src/JT808.DotNetty.Udp/JT808UdpDotnettyExtensions.cs
+++ b/src/JT808.DotNetty.Udp/JT808UdpDotnettyExtensions.cs
@@ -1,6 +1,8 @@
using JT808.DotNetty.Core;
using JT808.DotNetty.Core.Codecs;
using JT808.DotNetty.Core.Handlers;
+using JT808.DotNetty.Core.Impls;
+using JT808.DotNetty.Core.Interfaces;
using JT808.DotNetty.Core.Jobs;
using JT808.DotNetty.Core.Services;
using JT808.DotNetty.Udp.Handlers;
@@ -18,6 +20,7 @@ namespace JT808.DotNetty.Udp
{
public static IServiceCollection AddJT808UdpHost(this IServiceCollection serviceDescriptors)
{
+ serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddScoped();
diff --git a/src/JT808.DotNetty.WebApi/Handlers/JT808MsgIdDefaultWebApiHandler.cs b/src/JT808.DotNetty.WebApi/Handlers/JT808MsgIdDefaultWebApiHandler.cs
index d7f86e9..d247fb1 100644
--- a/src/JT808.DotNetty.WebApi/Handlers/JT808MsgIdDefaultWebApiHandler.cs
+++ b/src/JT808.DotNetty.WebApi/Handlers/JT808MsgIdDefaultWebApiHandler.cs
@@ -1,6 +1,6 @@
using JT808.DotNetty.Abstractions;
using JT808.DotNetty.Abstractions.Dtos;
-using JT808.DotNetty.Core.Enums;
+using JT808.DotNetty.Abstractions.Enums;
using JT808.DotNetty.Core.Handlers;
using JT808.DotNetty.Core.Interfaces;
using JT808.DotNetty.Core.Metadata;
@@ -48,11 +48,11 @@ namespace JT808.DotNetty.WebApi.Handlers
)
{
this.jT808SimpleSystemCollectService = jT808SimpleSystemCollectService;
- this.jT808TcpTrafficService = jT808TrafficServiceFactory.Create(JT808ModeType.Tcp);
+ this.jT808TcpTrafficService = jT808TrafficServiceFactory.Create(JT808TransportProtocolType.tcp);
this.jT808UnificationTcpSendService = jT808UnificationTcpSendService;
this.jT808TcpSessionService = jT808TcpSessionService;
this.jT808TransmitAddressFilterService = jT808TransmitAddressFilterService;
- this.jT808TcpAtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808ModeType.Tcp);
+ this.jT808TcpAtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.tcp);
InitCommonRoute();
InitTcpRoute();
}
@@ -70,10 +70,10 @@ namespace JT808.DotNetty.WebApi.Handlers
)
{
this.jT808SimpleSystemCollectService = jT808SimpleSystemCollectService;
- this.jT808UdpTrafficService = jT808TrafficServiceFactory.Create(JT808ModeType.Udp);
+ this.jT808UdpTrafficService = jT808TrafficServiceFactory.Create(JT808TransportProtocolType.udp);
this.jT808UdpSessionService = jT808UdpSessionService;
this.jT808UnificationUdpSendService = jT808UnificationUdpSendService;
- this.jT808UdpAtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808ModeType.Udp);
+ this.jT808UdpAtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.udp);
InitCommonRoute();
InitUdpRoute();
}
@@ -95,15 +95,15 @@ namespace JT808.DotNetty.WebApi.Handlers
)
{
this.jT808SimpleSystemCollectService = jT808SimpleSystemCollectService;
- this.jT808TcpTrafficService = jT808TrafficServiceFactory.Create(JT808ModeType.Tcp);
- this.jT808UdpTrafficService = jT808TrafficServiceFactory.Create(JT808ModeType.Udp);
+ this.jT808TcpTrafficService = jT808TrafficServiceFactory.Create(JT808TransportProtocolType.tcp);
+ this.jT808UdpTrafficService = jT808TrafficServiceFactory.Create(JT808TransportProtocolType.udp);
this.jT808UdpSessionService = jT808UdpSessionService;
this.jT808UnificationTcpSendService = jT808UnificationTcpSendService;
this.jT808UnificationUdpSendService = jT808UnificationUdpSendService;
this.jT808TcpSessionService = jT808TcpSessionService;
this.jT808TransmitAddressFilterService = jT808TransmitAddressFilterService;
- this.jT808TcpAtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808ModeType.Tcp);
- this.jT808UdpAtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808ModeType.Udp);
+ this.jT808TcpAtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.tcp);
+ this.jT808UdpAtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.udp);
InitCommonRoute();
InitTcpRoute();
InitUdpRoute();
diff --git a/src/JT808.DotNetty.WebApi/JT808.DotNetty.WebApi.csproj b/src/JT808.DotNetty.WebApi/JT808.DotNetty.WebApi.csproj
index 16622ca..5e9656d 100644
--- a/src/JT808.DotNetty.WebApi/JT808.DotNetty.WebApi.csproj
+++ b/src/JT808.DotNetty.WebApi/JT808.DotNetty.WebApi.csproj
@@ -12,9 +12,9 @@
false
https://github.com/SmallChi/JT808DotNetty
https://github.com/SmallChi/JT808DotNetty
- https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
+ https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
true
- 1.1.1
+ 1.2.0
diff --git a/src/JT808.DotNetty.WebApiClientTool/JT808.DotNetty.WebApiClientTool.csproj b/src/JT808.DotNetty.WebApiClientTool/JT808.DotNetty.WebApiClientTool.csproj
index 75d438e..e98cb3e 100644
--- a/src/JT808.DotNetty.WebApiClientTool/JT808.DotNetty.WebApiClientTool.csproj
+++ b/src/JT808.DotNetty.WebApiClientTool/JT808.DotNetty.WebApiClientTool.csproj
@@ -12,13 +12,13 @@
false
https://github.com/SmallChi/JT808DotNetty
https://github.com/SmallChi/JT808DotNetty
- https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
+ https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
true
- 1.1.1
+ 1.2.0
-
+
diff --git a/src/JT808.DotNetty.sln b/src/JT808.DotNetty.sln
index e2d886d..80833d2 100644
--- a/src/JT808.DotNetty.sln
+++ b/src/JT808.DotNetty.sln
@@ -3,10 +3,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28922.388
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{B5A80356-5AF6-449F-9D8B-3C1BBB9D2443}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Protocol", "JT808.Protocol\src\JT808.Protocol\JT808.Protocol.csproj", "{9FCA2EE9-8253-41AA-A64C-9883413864F9}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.Udp", "JT808.DotNetty.Udp\JT808.DotNetty.Udp.csproj", "{C960084C-2CF4-4748-AD35-D2384285D6A3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.Core", "JT808.DotNetty.Core\JT808.DotNetty.Core.csproj", "{67C5DC72-0004-48B3-BB5A-9CB7069B4F02}"
@@ -45,10 +41,6 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {9FCA2EE9-8253-41AA-A64C-9883413864F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9FCA2EE9-8253-41AA-A64C-9883413864F9}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {9FCA2EE9-8253-41AA-A64C-9883413864F9}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {9FCA2EE9-8253-41AA-A64C-9883413864F9}.Release|Any CPU.Build.0 = Release|Any CPU
{C960084C-2CF4-4748-AD35-D2384285D6A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C960084C-2CF4-4748-AD35-D2384285D6A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C960084C-2CF4-4748-AD35-D2384285D6A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -110,7 +102,6 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {9FCA2EE9-8253-41AA-A64C-9883413864F9} = {B5A80356-5AF6-449F-9D8B-3C1BBB9D2443}
{1C4CCE9B-761B-4581-B5DA-5B6D83572D56} = {3BD7FF02-8516-4A77-A385-9FDCDD792E22}
{AEF1E1E2-C861-4268-86F6-6F376FAF79A7} = {3BD7FF02-8516-4A77-A385-9FDCDD792E22}
{E503BFD8-D90A-4610-97C7-5B9A0497303B} = {3BD7FF02-8516-4A77-A385-9FDCDD792E22}
diff --git a/src/JT808.Protocol b/src/JT808.Protocol
deleted file mode 160000
index f0a1c92..0000000
--- a/src/JT808.Protocol
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit f0a1c9255c52540af52fdc679f67380b442fce36