From 7b205a9e11717280ae9ff55ef363af62d493a518 Mon Sep 17 00:00:00 2001
From: SmallChi <564952747@qq.com>
Date: Sun, 14 Oct 2018 10:14:29 +0800
Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E5=A4=B4=E9=83=A8=E7=89=88?=
=?UTF-8?q?=E6=9C=AC=E5=8F=B7=E4=B8=BA=E5=85=AC=E5=BC=80=E5=8F=AF=E5=86=99?=
=?UTF-8?q?=202.=E5=A2=9E=E5=8A=A0DI=E6=B3=A8=E5=85=A5=E6=89=A9=E5=B1=95?=
=?UTF-8?q?=E6=96=B9=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...Extensions.DependencyInjection.Test.csproj | 27 ++++++++++
.../Program.cs | 27 ++++++++++
.../appsettings.json | 29 +++++++++++
.../DependencyInjectionExtensions.cs | 52 +++++++++++++++++++
...ocol.Extensions.DependencyInjection.csproj | 15 ++++++
.../Options/JT809Options.cs | 23 ++++++++
6 files changed, 173 insertions(+)
create mode 100644 src/JT809.Protocol.Extensions.DependencyInjection.Test/JT809.Protocol.Extensions.DependencyInjection.Test.csproj
create mode 100644 src/JT809.Protocol.Extensions.DependencyInjection.Test/Program.cs
create mode 100644 src/JT809.Protocol.Extensions.DependencyInjection.Test/appsettings.json
create mode 100644 src/JT809.Protocol.Extensions.DependencyInjection/DependencyInjectionExtensions.cs
create mode 100644 src/JT809.Protocol.Extensions.DependencyInjection/JT809.Protocol.Extensions.DependencyInjection.csproj
create mode 100644 src/JT809.Protocol.Extensions.DependencyInjection/Options/JT809Options.cs
diff --git a/src/JT809.Protocol.Extensions.DependencyInjection.Test/JT809.Protocol.Extensions.DependencyInjection.Test.csproj b/src/JT809.Protocol.Extensions.DependencyInjection.Test/JT809.Protocol.Extensions.DependencyInjection.Test.csproj
new file mode 100644
index 0000000..87d789f
--- /dev/null
+++ b/src/JT809.Protocol.Extensions.DependencyInjection.Test/JT809.Protocol.Extensions.DependencyInjection.Test.csproj
@@ -0,0 +1,27 @@
+
+
+
+ Exe
+ netcoreapp2.1
+ 7.3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Always
+
+
+
+
diff --git a/src/JT809.Protocol.Extensions.DependencyInjection.Test/Program.cs b/src/JT809.Protocol.Extensions.DependencyInjection.Test/Program.cs
new file mode 100644
index 0000000..63b1994
--- /dev/null
+++ b/src/JT809.Protocol.Extensions.DependencyInjection.Test/Program.cs
@@ -0,0 +1,27 @@
+using JT809.Protocol.Extensions.DependencyInjection.Options;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+using System;
+using System.Threading.Tasks;
+
+namespace JT809.Protocol.Extensions.DependencyInjection.Test
+{
+ class Program
+ {
+ static async Task Main(string[] args)
+ {
+ var serverHostBuilder = new HostBuilder()
+ .ConfigureAppConfiguration((hostingContext, config) =>
+ {
+ config.SetBasePath(AppDomain.CurrentDomain.BaseDirectory);
+ config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
+ })
+ .ConfigureServices((hostContext, services) =>
+ {
+ services.AddJT809Configure(hostContext.Configuration.GetSection("JT809Options"));
+ });
+ await serverHostBuilder.RunConsoleAsync();
+ }
+ }
+}
diff --git a/src/JT809.Protocol.Extensions.DependencyInjection.Test/appsettings.json b/src/JT809.Protocol.Extensions.DependencyInjection.Test/appsettings.json
new file mode 100644
index 0000000..726373d
--- /dev/null
+++ b/src/JT809.Protocol.Extensions.DependencyInjection.Test/appsettings.json
@@ -0,0 +1,29 @@
+{
+ "Logging": {
+ "IncludeScopes": false,
+ "Debug": {
+ "LogLevel": {
+ "Default": "Trace"
+ }
+ },
+ "Console": {
+ "LogLevel": {
+ "Default": "Trace"
+ }
+ }
+ },
+ "JT809Options": {
+ "HeaderOptions": {
+ "MsgGNSSCENTERID": 20181012,
+ "EncryptFlag": "None",
+ "EncryptKey": 9999,
+ "Version": "1.0.0"
+ },
+ "EncryptOptions": {
+ "M1": 0,
+ "IA1": 0,
+ "IC1": 0,
+ "Key": 0
+ }
+ }
+}
diff --git a/src/JT809.Protocol.Extensions.DependencyInjection/DependencyInjectionExtensions.cs b/src/JT809.Protocol.Extensions.DependencyInjection/DependencyInjectionExtensions.cs
new file mode 100644
index 0000000..458b219
--- /dev/null
+++ b/src/JT809.Protocol.Extensions.DependencyInjection/DependencyInjectionExtensions.cs
@@ -0,0 +1,52 @@
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.DependencyInjection.Extensions;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using JT809.Protocol.JT809Configs;
+using Microsoft.Extensions.Configuration;
+using JT809.Protocol.JT809Encrypt;
+using JT809.Protocol.Extensions.DependencyInjection.Options;
+using Microsoft.Extensions.Options;
+
+namespace JT809.Protocol.Extensions.DependencyInjection
+{
+ public static class DependencyInjectionExtensions
+ {
+ public static IServiceCollection AddJT809Configure(this IServiceCollection services, IConfiguration configuration)
+ {
+ services.Configure(configuration);
+ ServiceProvider serviceProvider = services.BuildServiceProvider();
+ JT809Options options = serviceProvider.GetRequiredService>().Value;
+ var versions = options.Version.Split(new string []{ "." }, StringSplitOptions.RemoveEmptyEntries);
+ if (versions.Length == 3)
+ {
+ options.HeaderOptions.Version = new JT809Header_Version(byte.Parse(versions[0]), byte.Parse(versions[1]), byte.Parse(versions[2]));
+ }
+ else if(versions.Length == 2)
+ {
+ options.HeaderOptions.Version = new JT809Header_Version(byte.Parse(versions[0]), byte.Parse(versions[1]),0);
+ }
+ else if (versions.Length == 1)
+ {
+ options.HeaderOptions.Version = new JT809Header_Version(byte.Parse(versions[0]), 0, 0);
+ }
+ JT809GlobalConfig.Instance.SetHeaderOptions(options.HeaderOptions);
+ JT809GlobalConfig.Instance.SetSkipCRCCode(options.SkipCRCCode);
+ if (options.HeaderOptions.EncryptFlag == JT809Header_Encrypt.Common)
+ {
+ JT809GlobalConfig.Instance.SetEncrypt(new JT809EncryptImpl(options.EncryptOptions));
+ }
+ try
+ {
+ var msgSNDistributedImpl = services.BuildServiceProvider().GetRequiredService();
+ JT809GlobalConfig.Instance.SetMsgSNDistributed(msgSNDistributedImpl);
+ }
+ catch
+ {
+
+ }
+ return services;
+ }
+ }
+}
diff --git a/src/JT809.Protocol.Extensions.DependencyInjection/JT809.Protocol.Extensions.DependencyInjection.csproj b/src/JT809.Protocol.Extensions.DependencyInjection/JT809.Protocol.Extensions.DependencyInjection.csproj
new file mode 100644
index 0000000..cafd451
--- /dev/null
+++ b/src/JT809.Protocol.Extensions.DependencyInjection/JT809.Protocol.Extensions.DependencyInjection.csproj
@@ -0,0 +1,15 @@
+
+
+
+ netstandard2.0
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/JT809.Protocol.Extensions.DependencyInjection/Options/JT809Options.cs b/src/JT809.Protocol.Extensions.DependencyInjection/Options/JT809Options.cs
new file mode 100644
index 0000000..faff3dd
--- /dev/null
+++ b/src/JT809.Protocol.Extensions.DependencyInjection/Options/JT809Options.cs
@@ -0,0 +1,23 @@
+using JT809.Protocol.JT809Configs;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT809.Protocol.Extensions.DependencyInjection.Options
+{
+ public class JT809Options
+ {
+ public JT809EncryptOptions EncryptOptions { get; set; }
+ public JT809HeaderOptions HeaderOptions { get; set; }
+ ///
+ /// 版本号:
+ /// 默认 1.0.0
+ ///
+ public string Version { get; set; }
+ ///
+ /// 设置跳过校验码
+ /// 场景:测试的时候,可能需要收到改数据,所以测试的时候有用
+ ///
+ public bool SkipCRCCode { get; set; }
+ }
+}