@@ -5,8 +5,8 @@ | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.0" /> | |||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" /> | |||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.3" /> | |||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" /> | |||
<PackageReference Include="xunit" Version="2.4.1" /> | |||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"> | |||
<PrivateAssets>all</PrivateAssets> | |||
@@ -12,47 +12,8 @@ namespace JT809.Protocol.Extensions.JT1078 | |||
public static IJT809Builder AddJT1078Configure(this IJT809Builder iJT809Builder) | |||
{ | |||
iJT809Builder.Config.Register(Assembly.GetExecutingAssembly()); | |||
#warning 不知道是不是jt1078协议的809结构有问题,先按交换的格式(少了数据交换的头部) | |||
iJT809Builder.Config.BusinessTypeFactory.SetMap<JT809_JT1078_0x1700>((ushort)JT809_JT1078_BusinessType.主链路时效口令业务类); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x1700_0x1701>((ushort)JT809_JT1078_SubBusinessType.时效口令上报消息); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x1700_0x1702>((ushort)JT809_JT1078_SubBusinessType.时效口令请求消息); | |||
iJT809Builder.Config.BusinessTypeFactory.SetMap<JT809_JT1078_0x1800>((ushort)JT809_JT1078_BusinessType.主链路实时音视频业务类); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x1800_0x1801>((ushort)JT809_JT1078_SubBusinessType.实时音视频请求应答消息); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x1800_0x1802>((ushort)JT809_JT1078_SubBusinessType.主动请求停止实时音视频传输应答消息); | |||
iJT809Builder.Config.BusinessTypeFactory.SetMap<JT809_JT1078_0x1900>((ushort)JT809_JT1078_BusinessType.主链路远程录像检索业务类); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x1900_0x1901>((ushort)JT809_JT1078_SubBusinessType.主动上传音视频资源目录信息消息); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x1900_0x1902>((ushort)JT809_JT1078_SubBusinessType.查询音视频资源目录应答消息); | |||
iJT809Builder.Config.BusinessTypeFactory.SetMap<JT809_JT1078_0x1A00>((ushort)JT809_JT1078_BusinessType.主链路远程录像回放业务类); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x1A00_0x1A01>((ushort)JT809_JT1078_SubBusinessType.远程录像回放请求应答消息); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x1A00_0x1A02>((ushort)JT809_JT1078_SubBusinessType.远程录像回放控制应答消息); | |||
iJT809Builder.Config.BusinessTypeFactory.SetMap<JT809_JT1078_0x1B00>((ushort)JT809_JT1078_BusinessType.主链路远程录像下载业务类); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x1B00_0x1B01>((ushort)JT809_JT1078_SubBusinessType.远程录像下载请求应答消息); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x1B00_0x1B02>((ushort)JT809_JT1078_SubBusinessType.远程录像下载通知消息); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x1B00_0x1B03>((ushort)JT809_JT1078_SubBusinessType.远程录像下载控制应答消息); | |||
iJT809Builder.Config.BusinessTypeFactory.SetMap<JT809_JT1078_0x9700>((ushort)JT809_JT1078_BusinessType.从链路时效口令业务类); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x9700_0x9702>((ushort)JT809_JT1078_SubBusinessType.时效口令请求应答消息); | |||
iJT809Builder.Config.BusinessTypeFactory.SetMap<JT809_JT1078_0x9800>((ushort)JT809_JT1078_BusinessType.从链路实时音视频业务类); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x9800_0x9801>((ushort)JT809_JT1078_SubBusinessType.实时音视频请求消息); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x9800_0x9802>((ushort)JT809_JT1078_SubBusinessType.主动请求停止实时音视频传输消息); | |||
iJT809Builder.Config.BusinessTypeFactory.SetMap<JT809_JT1078_0x9900>((ushort)JT809_JT1078_BusinessType.从链路远程录像检索业务类); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x9900_0x9901>((ushort)JT809_JT1078_SubBusinessType.主动上传音视频资源目录信息应答消息); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x9900_0x9902>((ushort)JT809_JT1078_SubBusinessType.查询音视频资源目录请求消息); | |||
iJT809Builder.Config.BusinessTypeFactory.SetMap<JT809_JT1078_0x9A00>((ushort)JT809_JT1078_BusinessType.从链路远程录像回放业务类); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x9A00_0x9A01>((ushort)JT809_JT1078_SubBusinessType.远程录像回放请求消息); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x9A00_0x9A02>((ushort)JT809_JT1078_SubBusinessType.远程录像回放控制消息); | |||
iJT809Builder.Config.BusinessTypeFactory.SetMap<JT809_JT1078_0x9B00>((ushort)JT809_JT1078_BusinessType.从链路远程录像下载业务类); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x9B00_0x9B01>((ushort)JT809_JT1078_SubBusinessType.远程录像下载请求消息); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x9B00_0x9B02>((ushort)JT809_JT1078_SubBusinessType.远程录像下载完成通知应答消息); | |||
iJT809Builder.Config.SubBusinessTypeFactory.SetMap<JT809_JT1078_0x9B00_0x9B03>((ushort)JT809_JT1078_SubBusinessType.远程录像下载控制消息); | |||
iJT809Builder.Config.BusinessTypeFactory.Register(Assembly.GetExecutingAssembly()); | |||
iJT809Builder.Config.SubBusinessTypeFactory.Register(Assembly.GetExecutingAssembly()); | |||
return iJT809Builder; | |||
} | |||
} | |||
@@ -1,28 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x1700_0x1701_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x1700_0x1701> | |||
{ | |||
public JT809_JT1078_0x1700_0x1701 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1700_0x1701 jT808_JT1078_0X1701 = new JT809_JT1078_0x1700_0x1701(); | |||
jT808_JT1078_0X1701.PlateFormId = reader.ReadArray(11).ToArray(); | |||
jT808_JT1078_0X1701.AuthorizeCode1 = reader.ReadArray(64).ToArray(); | |||
jT808_JT1078_0X1701.AuthorizeCode2 = reader.ReadArray(64).ToArray(); | |||
return jT808_JT1078_0X1701; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1700_0x1701 value, IJT809Config config) | |||
{ | |||
writer.WriteArray(value.PlateFormId); | |||
writer.WriteArray(value.AuthorizeCode1); | |||
writer.WriteArray(value.AuthorizeCode2); | |||
} | |||
} | |||
} |
@@ -1,22 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x1700_0x1702_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x1700_0x1702> | |||
{ | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1700_0x1702 value, IJT809Config config) | |||
{ | |||
} | |||
public JT809_JT1078_0x1700_0x1702 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
return new JT809_JT1078_0x1700_0x1702(); | |||
} | |||
} | |||
} |
@@ -1,28 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x1800_0x1801_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x1800_0x1801> | |||
{ | |||
public JT809_JT1078_0x1800_0x1801 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1800_0x1801 jT808_JT1078_0x1800_0x1801 = new JT809_JT1078_0x1800_0x1801(); | |||
jT808_JT1078_0x1800_0x1801.Result = reader.ReadByte(); | |||
jT808_JT1078_0x1800_0x1801.ServerIp = reader.ReadString(32); | |||
jT808_JT1078_0x1800_0x1801.ServerPort = reader.ReadUInt16(); | |||
return jT808_JT1078_0x1800_0x1801; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1800_0x1801 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.Result); | |||
writer.WriteStringPadLeft(value.ServerIp,32); | |||
writer.WriteUInt16(value.ServerPort); | |||
} | |||
} | |||
} |
@@ -1,24 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x1800_0x1802_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x1800_0x1802> | |||
{ | |||
public JT809_JT1078_0x1800_0x1802 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1800_0x1802 jT808_JT1078_0x1800_0x1802 = new JT809_JT1078_0x1800_0x1802(); | |||
jT808_JT1078_0x1800_0x1802.Result = reader.ReadByte(); | |||
return jT808_JT1078_0x1800_0x1802; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1800_0x1802 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.Result); | |||
} | |||
} | |||
} |
@@ -1,43 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x1900_0x1901_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x1900_0x1901> | |||
{ | |||
public JT809_JT1078_0x1900_0x1901 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1900_0x1901 jT808_JT1078_0x1900_0x1901 = new JT809_JT1078_0x1900_0x1901(); | |||
jT808_JT1078_0x1900_0x1901.ItemNum=reader.ReadUInt32(); | |||
if (jT808_JT1078_0x1900_0x1901.ItemNum > 0) | |||
{ | |||
List<JT809_JT1078_0x1900_Record> jT808_JT1078_0x1900_0x1901_RecordList = new List<JT809_JT1078_0x1900_Record>(); | |||
var formatter = config.GetMessagePackFormatter<JT809_JT1078_0x1900_Record>(); | |||
for (int i = 0; i < jT808_JT1078_0x1900_0x1901.ItemNum; i++) | |||
{ | |||
var jT808_JT1078_0x1900_0x1901_Record = formatter.Deserialize(ref reader, config); | |||
jT808_JT1078_0x1900_0x1901_RecordList.Add(jT808_JT1078_0x1900_0x1901_Record); | |||
} | |||
jT808_JT1078_0x1900_0x1901.ItemList = jT808_JT1078_0x1900_0x1901_RecordList; | |||
} | |||
return jT808_JT1078_0x1900_0x1901; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1900_0x1901 value, IJT809Config config) | |||
{ | |||
writer.WriteUInt32(value.ItemNum); | |||
if (value.ItemList.Count > 0) | |||
{ | |||
var formatter = config.GetMessagePackFormatter<JT809_JT1078_0x1900_Record>(); | |||
foreach (var item in value.ItemList) | |||
{ | |||
formatter.Serialize(ref writer, item, config); | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -1,38 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x1900_0x1901_Record_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x1900_Record> | |||
{ | |||
public JT809_JT1078_0x1900_Record Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1900_Record jT808_JT1078_0x1900_0x1901_Record = new JT809_JT1078_0x1900_Record(); | |||
jT808_JT1078_0x1900_0x1901_Record.ChannelId = reader.ReadByte(); | |||
jT808_JT1078_0x1900_0x1901_Record.StartTime = reader.ReadUTCDateTime(); | |||
jT808_JT1078_0x1900_0x1901_Record.EndTime = reader.ReadUTCDateTime(); | |||
jT808_JT1078_0x1900_0x1901_Record.AlarmType = reader.ReadUInt64(); | |||
jT808_JT1078_0x1900_0x1901_Record.AVItemType = reader.ReadByte(); | |||
jT808_JT1078_0x1900_0x1901_Record.StreamType = reader.ReadByte(); | |||
jT808_JT1078_0x1900_0x1901_Record.MemType = reader.ReadByte(); | |||
jT808_JT1078_0x1900_0x1901_Record.FileSize = reader.ReadUInt32(); | |||
return jT808_JT1078_0x1900_0x1901_Record; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1900_Record value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.ChannelId); | |||
writer.WriteUTCDateTime(value.StartTime); | |||
writer.WriteUTCDateTime(value.EndTime); | |||
writer.WriteUInt64(value.AlarmType); | |||
writer.WriteByte(value.AVItemType); | |||
writer.WriteByte(value.StreamType); | |||
writer.WriteByte(value.MemType); | |||
writer.WriteUInt32(value.FileSize); | |||
} | |||
} | |||
} |
@@ -1,45 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x1900_0x1902_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x1900_0x1902> | |||
{ | |||
public JT809_JT1078_0x1900_0x1902 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1900_0x1902 jT808_JT1078_0x1900_0x1902 = new JT809_JT1078_0x1900_0x1902(); | |||
jT808_JT1078_0x1900_0x1902.Result = reader.ReadByte(); | |||
jT808_JT1078_0x1900_0x1902.ItemNum = reader.ReadUInt32(); | |||
if (jT808_JT1078_0x1900_0x1902.ItemNum > 0) | |||
{ | |||
List<JT809_JT1078_0x1900_Record> jT808_JT1078_0x1900_0x1901_RecordList = new List<JT809_JT1078_0x1900_Record>(); | |||
var formatter = config.GetMessagePackFormatter<JT809_JT1078_0x1900_Record>(); | |||
for (int i = 0; i < jT808_JT1078_0x1900_0x1902.ItemNum; i++) | |||
{ | |||
var jT808_JT1078_0x1900_0x1901_Record = formatter.Deserialize(ref reader, config); | |||
jT808_JT1078_0x1900_0x1901_RecordList.Add(jT808_JT1078_0x1900_0x1901_Record); | |||
} | |||
jT808_JT1078_0x1900_0x1902.ItemList = jT808_JT1078_0x1900_0x1901_RecordList; | |||
} | |||
return jT808_JT1078_0x1900_0x1902; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1900_0x1902 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.Result); | |||
writer.WriteUInt32(value.ItemNum); | |||
if (value.ItemList.Count > 0) | |||
{ | |||
var formatter = config.GetMessagePackFormatter<JT809_JT1078_0x1900_Record>(); | |||
foreach (var item in value.ItemList) | |||
{ | |||
formatter.Serialize(ref writer, item, config); | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -1,28 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x1A00_0x1A01_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x1A00_0x1A01> | |||
{ | |||
public JT809_JT1078_0x1A00_0x1A01 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1A00_0x1A01 jT808_JT1078_0x1A00_0x1A01 = new JT809_JT1078_0x1A00_0x1A01(); | |||
jT808_JT1078_0x1A00_0x1A01.ServerIp = reader.ReadString(32); | |||
jT808_JT1078_0x1A00_0x1A01.ServerPort = reader.ReadUInt16(); | |||
jT808_JT1078_0x1A00_0x1A01.Result = reader.ReadByte(); | |||
return jT808_JT1078_0x1A00_0x1A01; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1A00_0x1A01 value, IJT809Config config) | |||
{ | |||
writer.WriteStringPadLeft(value.ServerIp, 32); | |||
writer.WriteUInt16(value.ServerPort); | |||
writer.WriteByte(value.Result); | |||
} | |||
} | |||
} |
@@ -1,24 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x1A00_0x1A02_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x1A00_0x1A02> | |||
{ | |||
public JT809_JT1078_0x1A00_0x1A02 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1A00_0x1A02 jT808_JT1078_0x1A00_0x1A02 = new JT809_JT1078_0x1A00_0x1A02(); | |||
jT808_JT1078_0x1A00_0x1A02.Result = reader.ReadByte(); | |||
return jT808_JT1078_0x1A00_0x1A02; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1A00_0x1A02 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.Result); | |||
} | |||
} | |||
} |
@@ -1,26 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x1B00_0x1B01_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x1B00_0x1B01> | |||
{ | |||
public JT809_JT1078_0x1B00_0x1B01 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1B00_0x1B01 jT808_JT1078_0x1B00_0x1B01 = new JT809_JT1078_0x1B00_0x1B01(); | |||
jT808_JT1078_0x1B00_0x1B01.Result = reader.ReadByte(); | |||
jT808_JT1078_0x1B00_0x1B01.SessionId = reader.ReadUInt16(); | |||
return jT808_JT1078_0x1B00_0x1B01; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1B00_0x1B01 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.Result); | |||
writer.WriteUInt16(value.SessionId); | |||
} | |||
} | |||
} |
@@ -1,36 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x1B00_0x1B02_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x1B00_0x1B02> | |||
{ | |||
public JT809_JT1078_0x1B00_0x1B02 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1B00_0x1B02 jT808_JT1078_0x1B00_0x1B02 = new JT809_JT1078_0x1B00_0x1B02(); | |||
jT808_JT1078_0x1B00_0x1B02.Result = reader.ReadByte(); | |||
jT808_JT1078_0x1B00_0x1B02.SessionId = reader.ReadUInt16(); | |||
jT808_JT1078_0x1B00_0x1B02.ServerIp = reader.ReadString(32); | |||
jT808_JT1078_0x1B00_0x1B02.TcpPort = reader.ReadUInt16(); | |||
jT808_JT1078_0x1B00_0x1B02.UserName = reader.ReadString(49); | |||
jT808_JT1078_0x1B00_0x1B02.Password = reader.ReadString(22); | |||
jT808_JT1078_0x1B00_0x1B02.FilePath = reader.ReadString(200); | |||
return jT808_JT1078_0x1B00_0x1B02; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1B00_0x1B02 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.Result); | |||
writer.WriteUInt16(value.SessionId); | |||
writer.WriteStringPadLeft(value.ServerIp, 32); | |||
writer.WriteUInt16(value.TcpPort); | |||
writer.WriteStringPadLeft(value.UserName, 49); | |||
writer.WriteStringPadLeft(value.Password, 22); | |||
writer.WriteStringPadLeft(value.FilePath, 200); | |||
} | |||
} | |||
} |
@@ -1,24 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x1B00_0x1B03_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x1B00_0x1B03> | |||
{ | |||
public JT809_JT1078_0x1B00_0x1B03 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1B00_0x1B03 jT808_JT1078_0x1B00_0x1B01 = new JT809_JT1078_0x1B00_0x1B03(); | |||
jT808_JT1078_0x1B00_0x1B01.Result = reader.ReadByte(); | |||
return jT808_JT1078_0x1B00_0x1B01; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1B00_0x1B03 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.Result); | |||
} | |||
} | |||
} |
@@ -1,22 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x9700_0x9702_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x9700_0x9702> | |||
{ | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9700_0x9702 value, IJT809Config config) | |||
{ | |||
} | |||
public JT809_JT1078_0x9700_0x9702 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
return new JT809_JT1078_0x9700_0x9702(); | |||
} | |||
} | |||
} |
@@ -1,30 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x9800_0x9801_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x9800_0x9801> | |||
{ | |||
public JT809_JT1078_0x9800_0x9801 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9800_0x9801 jT808_JT1078_0x9800_0x9801 = new JT809_JT1078_0x9800_0x9801(); | |||
jT808_JT1078_0x9800_0x9801.ChannelId = reader.ReadByte(); | |||
jT808_JT1078_0x9800_0x9801.AVitemType = reader.ReadByte(); | |||
jT808_JT1078_0x9800_0x9801.AuthorizeCode = reader.ReadArray(64).ToArray(); | |||
jT808_JT1078_0x9800_0x9801.GnssData = reader.ReadArray(36).ToArray(); | |||
return jT808_JT1078_0x9800_0x9801; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9800_0x9801 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.ChannelId); | |||
writer.WriteByte(value.AVitemType); | |||
writer.WriteArray(value.AuthorizeCode); | |||
writer.WriteArray(value.GnssData); | |||
} | |||
} | |||
} |
@@ -1,26 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x9800_0x9802_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x9800_0x9802> | |||
{ | |||
public JT809_JT1078_0x9800_0x9802 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9800_0x9802 jT808_JT1078_0x9800_0x9802 = new JT809_JT1078_0x9800_0x9802(); | |||
jT808_JT1078_0x9800_0x9802.ChannelId = reader.ReadByte(); | |||
jT808_JT1078_0x9800_0x9802.AVitemType = reader.ReadByte(); | |||
return jT808_JT1078_0x9800_0x9802; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9800_0x9802 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.ChannelId); | |||
writer.WriteByte(value.AVitemType); | |||
} | |||
} | |||
} |
@@ -1,26 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x9900_0x9901_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x9900_0x9901> | |||
{ | |||
public JT809_JT1078_0x9900_0x9901 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9900_0x9901 jT808_JT1078_0x9900_0x9901 = new JT809_JT1078_0x9900_0x9901(); | |||
jT808_JT1078_0x9900_0x9901.Result = reader.ReadByte(); | |||
jT808_JT1078_0x9900_0x9901.ItemNumber = reader.ReadByte(); | |||
return jT808_JT1078_0x9900_0x9901; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9900_0x9901 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.Result); | |||
writer.WriteByte(value.ItemNumber); | |||
} | |||
} | |||
} |
@@ -1,41 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x9900_0x9902_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x9900_0x9902> | |||
{ | |||
public JT809_JT1078_0x9900_0x9902 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9900_0x9902 jT808_JT1078_0x9900_0x9902 = new JT809_JT1078_0x9900_0x9902(); | |||
jT808_JT1078_0x9900_0x9902.ChannelId = reader.ReadByte(); | |||
#warning 此处时间8个字节,暂使用utc时间代替 | |||
jT808_JT1078_0x9900_0x9902.StartTime = reader.ReadUTCDateTime(); | |||
jT808_JT1078_0x9900_0x9902.EndTime = reader.ReadUTCDateTime(); | |||
jT808_JT1078_0x9900_0x9902.AlarmType = reader.ReadUInt64(); | |||
jT808_JT1078_0x9900_0x9902.AVItemType = reader.ReadByte(); | |||
jT808_JT1078_0x9900_0x9902.StreamType = reader.ReadByte(); | |||
jT808_JT1078_0x9900_0x9902.MemType = reader.ReadByte(); | |||
jT808_JT1078_0x9900_0x9902.AuthorizeCode = reader.ReadArray(64).ToArray(); | |||
jT808_JT1078_0x9900_0x9902.GnssData = reader.ReadArray(36).ToArray(); | |||
return jT808_JT1078_0x9900_0x9902; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9900_0x9902 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.ChannelId); | |||
writer.WriteUTCDateTime(value.StartTime); | |||
writer.WriteUTCDateTime(value.EndTime); | |||
writer.WriteUInt64(value.AlarmType); | |||
writer.WriteByte(value.AVItemType); | |||
writer.WriteByte(value.StreamType); | |||
writer.WriteByte(value.MemType); | |||
writer.WriteArray(value.AuthorizeCode); | |||
writer.WriteArray(value.GnssData); | |||
} | |||
} | |||
} |
@@ -1,38 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x9A00_0x9A01_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x9A00_0x9A01> | |||
{ | |||
public JT809_JT1078_0x9A00_0x9A01 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9A00_0x9A01 jT808_JT1078_0x9A00_0x9A01 = new JT809_JT1078_0x9A00_0x9A01(); | |||
jT808_JT1078_0x9A00_0x9A01.ChannelId = reader.ReadByte(); | |||
jT808_JT1078_0x9A00_0x9A01.AVItemType = reader.ReadByte(); | |||
jT808_JT1078_0x9A00_0x9A01.StreamType = reader.ReadByte(); | |||
jT808_JT1078_0x9A00_0x9A01.MemType = reader.ReadByte(); | |||
jT808_JT1078_0x9A00_0x9A01.PlayBackStartTime = reader.ReadUTCDateTime(); | |||
jT808_JT1078_0x9A00_0x9A01.PlayBackEndTime = reader.ReadUTCDateTime(); | |||
jT808_JT1078_0x9A00_0x9A01.AuthorizeCode = reader.ReadArray(64).ToArray(); | |||
jT808_JT1078_0x9A00_0x9A01.GnssData = reader.ReadArray(36).ToArray(); | |||
return jT808_JT1078_0x9A00_0x9A01; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9A00_0x9A01 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.ChannelId); | |||
writer.WriteByte(value.AVItemType); | |||
writer.WriteByte(value.StreamType); | |||
writer.WriteByte(value.MemType); | |||
writer.WriteUTCDateTime(value.PlayBackStartTime); | |||
writer.WriteUTCDateTime(value.PlayBackEndTime); | |||
writer.WriteArray(value.AuthorizeCode); | |||
writer.WriteArray(value.GnssData); | |||
} | |||
} | |||
} |
@@ -1,28 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x9A00_0x9A02_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x9A00_0x9A02> | |||
{ | |||
public JT809_JT1078_0x9A00_0x9A02 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9A00_0x9A02 jT808_JT1078_0x9A00_0x9A02 = new JT809_JT1078_0x9A00_0x9A02(); | |||
jT808_JT1078_0x9A00_0x9A02.ControlType = reader.ReadByte(); | |||
jT808_JT1078_0x9A00_0x9A02.FastTime = reader.ReadByte(); | |||
jT808_JT1078_0x9A00_0x9A02.DateTime = reader.ReadUTCDateTime(); | |||
return jT808_JT1078_0x9A00_0x9A02; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9A00_0x9A02 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.ControlType); | |||
writer.WriteByte(value.FastTime); | |||
writer.WriteUTCDateTime(value.DateTime); | |||
} | |||
} | |||
} |
@@ -1,42 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x9B00_0x9B01_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x9B00_0x9B01> | |||
{ | |||
public JT809_JT1078_0x9B00_0x9B01 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9B00_0x9B01 jT808_JT1078_0x9B00_0x9B01 = new JT809_JT1078_0x9B00_0x9B01(); | |||
jT808_JT1078_0x9B00_0x9B01.ChannelId = reader.ReadByte(); | |||
jT808_JT1078_0x9B00_0x9B01.StartTime = reader.ReadUTCDateTime(); | |||
jT808_JT1078_0x9B00_0x9B01.EndTime = reader.ReadUTCDateTime(); | |||
jT808_JT1078_0x9B00_0x9B01.AlarmType = reader.ReadUInt64(); | |||
jT808_JT1078_0x9B00_0x9B01.AVItemType = reader.ReadByte(); | |||
jT808_JT1078_0x9B00_0x9B01.StreamType = reader.ReadByte(); | |||
jT808_JT1078_0x9B00_0x9B01.MemType = reader.ReadByte(); | |||
jT808_JT1078_0x9B00_0x9B01.FileSize = reader.ReadUInt32(); | |||
jT808_JT1078_0x9B00_0x9B01.AuthorizeCode = reader.ReadArray(64).ToArray(); | |||
jT808_JT1078_0x9B00_0x9B01.GnssData = reader.ReadArray(36).ToArray(); | |||
return jT808_JT1078_0x9B00_0x9B01; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9B00_0x9B01 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.ChannelId); | |||
writer.WriteUTCDateTime(value.StartTime); | |||
writer.WriteUTCDateTime(value.EndTime); | |||
writer.WriteUInt64(value.AlarmType); | |||
writer.WriteByte(value.AVItemType); | |||
writer.WriteByte(value.StreamType); | |||
writer.WriteByte(value.MemType); | |||
writer.WriteUInt32(value.FileSize); | |||
writer.WriteArray(value.AuthorizeCode); | |||
writer.WriteArray(value.GnssData); | |||
} | |||
} | |||
} |
@@ -1,26 +0,0 @@ | |||
using JT809.Protocol.Extensions.JT1078.MessageBody; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.Formatters | |||
{ | |||
public class JT809_JT1078_0x9B00_0x9B02_Formatter : IJT809MessagePackFormatter<JT809_JT1078_0x9B00_0x9B02> | |||
{ | |||
public JT809_JT1078_0x9B00_0x9B02 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9B00_0x9B02 jT808_JT1078_0x9B00_0x9B02 = new JT809_JT1078_0x9B00_0x9B02(); | |||
jT808_JT1078_0x9B00_0x9B02.Result = reader.ReadByte(); | |||
jT808_JT1078_0x9B00_0x9B02.SessionId = reader.ReadUInt16(); | |||
return jT808_JT1078_0x9B00_0x9B02; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9B00_0x9B02 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.Result); | |||
writer.WriteUInt16(value.SessionId); | |||
} | |||
} | |||
} |
@@ -19,6 +19,14 @@ | |||
<PackageLicenseFile>LICENSE</PackageLicenseFile> | |||
</PropertyGroup> | |||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|netstandard2.0|AnyCPU'"> | |||
<DocumentationFile>JT809.Protocol.Extensions.JT1078.xml</DocumentationFile> | |||
</PropertyGroup> | |||
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|netstandard2.0|AnyCPU'"> | |||
<DocumentationFile>JT809.Protocol.Extensions.JT1078.xml</DocumentationFile> | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<None Include="..\..\LICENSE"> | |||
<Pack>True</Pack> | |||
@@ -27,7 +35,7 @@ | |||
</ItemGroup> | |||
<ItemGroup> | |||
<PackageReference Include="JT809" Version="2.1.3" /> | |||
<PackageReference Include="JT809" Version="2.1.4-preview1" /> | |||
</ItemGroup> | |||
</Project> |
@@ -0,0 +1,746 @@ | |||
<?xml version="1.0"?> | |||
<doc> | |||
<assembly> | |||
<name>JT809.Protocol.Extensions.JT1078</name> | |||
</assembly> | |||
<members> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_BusinessType.主链路时效口令业务类"> | |||
<summary> | |||
主链路时效口令业务类 | |||
UP_AUTHORIZE_MSG | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_BusinessType.从链路时效口令业务类"> | |||
<summary> | |||
从链路时效口令业务类 | |||
DOWN_AUTHORIZE_MSG | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_BusinessType.主链路实时音视频业务类"> | |||
<summary> | |||
主链路实时音视频业务类 | |||
UP_REALVIDEO_MSG | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_BusinessType.从链路实时音视频业务类"> | |||
<summary> | |||
从链路实时音视频业务类 | |||
DOWN_REALVIDEO_MSG | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_BusinessType.主链路远程录像检索业务类"> | |||
<summary> | |||
主链路远程录像检索业务类 | |||
UP_SEARCH_MSG | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_BusinessType.从链路远程录像检索业务类"> | |||
<summary> | |||
从链路远程录像检索业务类 | |||
DOWN_SEARCH_MSG | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_BusinessType.主链路远程录像回放业务类"> | |||
<summary> | |||
主链路远程录像回放业务类 | |||
UP_PLAYBACK_MSG | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_BusinessType.从链路远程录像回放业务类"> | |||
<summary> | |||
从链路远程录像回放业务类 | |||
DOWN_PLAYBACK_MSG | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_BusinessType.主链路远程录像下载业务类"> | |||
<summary> | |||
主链路远程录像下载业务类 | |||
UP_DOWNLOAD_MSG | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_BusinessType.从链路远程录像下载业务类"> | |||
<summary> | |||
从链路远程录像下载业务类 | |||
DOWN_DOWNLOAD_MSG | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.时效口令上报消息"> | |||
<summary> | |||
时效口令上报消息 | |||
UP_AUTHRIZE_MSG_STARTUP | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.时效口令请求消息"> | |||
<summary> | |||
时效口令请求消息 | |||
UP_AUTHRIZE_MSG_STARTUP_REQ | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.时效口令请求应答消息"> | |||
<summary> | |||
时效口令请求应答消息 | |||
DOWN_AUTHRIZE_MSG_STARTUP_REQ_ACK | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.实时音视频请求应答消息"> | |||
<summary> | |||
实时音视频请求应答消息 | |||
UP_REALVIDEO_MSG_STARTUP_ACK | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.主动请求停止实时音视频传输应答消息"> | |||
<summary> | |||
主动请求停止实时音视频传输应答消息 | |||
UP_REALVIDEO_MSG_END_ACK | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.实时音视频请求消息"> | |||
<summary> | |||
实时音视频请求消息 | |||
DOWN_REALVIDEO_MSG_STARTUP | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.主动请求停止实时音视频传输消息"> | |||
<summary> | |||
主动请求停止实时音视频传输消息 | |||
DOWN_REALVIDEO_MSG_END | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.主动上传音视频资源目录信息消息"> | |||
<summary> | |||
主动上传音视频资源目录信息消息 | |||
UP_FILELIST_MSG | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.查询音视频资源目录应答消息"> | |||
<summary> | |||
查询音视频资源目录应答消息 | |||
UP_REALVIDEO_FILELIST_REQ_ACK | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.主动上传音视频资源目录信息应答消息"> | |||
<summary> | |||
主动上传音视频资源目录信息应答消息 | |||
DOWN_FILELIST_MSG_ACK | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.查询音视频资源目录请求消息"> | |||
<summary> | |||
查询音视频资源目录请求消息 | |||
DOWN_REALVIDEO_FILELIST_REQ | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.远程录像回放请求应答消息"> | |||
<summary> | |||
远程录像回放请求应答消息 | |||
UP_PLAYBACK_MSG_STARTUP_ACK | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.远程录像回放控制应答消息"> | |||
<summary> | |||
远程录像回放控制应答消息 | |||
UP_PLAYBACK_MSG_CONTROL_ACK | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.远程录像回放请求消息"> | |||
<summary> | |||
远程录像回放请求消息 | |||
DOWN_PLAYBACK_MSG_STARTUP | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.远程录像回放控制消息"> | |||
<summary> | |||
远程录像回放控制消息 | |||
DOWN_PLAYBACK_MSG_CONTROL | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.远程录像下载请求应答消息"> | |||
<summary> | |||
远程录像下载请求应答消息 | |||
UP_DOWNLOAD_MSG_STARTUP_ACK | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.远程录像下载通知消息"> | |||
<summary> | |||
远程录像下载通知消息 | |||
UP_DOWNLOAD_MSG_END_INFORM | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.远程录像下载控制应答消息"> | |||
<summary> | |||
远程录像下载控制应答消息 | |||
UP_DOWNLOAD_MSG_CONTROL_ACK | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.远程录像下载请求消息"> | |||
<summary> | |||
远程录像下载请求消息 | |||
DOWN_DOWNLOAD_MSG_STARTUP | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.远程录像下载完成通知应答消息"> | |||
<summary> | |||
远程录像下载完成通知应答消息 | |||
UP_DWONLOAD_MSG_END_INFORM_ACK | |||
</summary> | |||
</member> | |||
<member name="F:JT809.Protocol.Extensions.JT1078.Enums.JT809_JT1078_SubBusinessType.远程录像下载控制消息"> | |||
<summary> | |||
远程录像下载控制消息 | |||
DWON_DOWNLOAD_MSG_CONTROL | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1700"> | |||
<summary> | |||
主链路时效口令交互消息 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1700_0x1701"> | |||
<summary> | |||
时效口令上报消息 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1700_0x1701.PlateFormId"> | |||
<summary> | |||
企业视频监控平台唯一编码,平台所属企业行政区域代码+平台公共编号 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1700_0x1701.AuthorizeCode1"> | |||
<summary> | |||
归属地区政府平台使用的时效口令 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1700_0x1701.AuthorizeCode2"> | |||
<summary> | |||
跨域地区政府平台使用的时效口令 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1700_0x1702"> | |||
<summary> | |||
时效口令请求消息 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1800"> | |||
<summary> | |||
主链路实时音视频交互消息 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1800_0x1801"> | |||
<summary> | |||
实时音视频请求应答消息 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1800_0x1801.Result"> | |||
<summary> | |||
应答结果 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1800_0x1801.ServerIp"> | |||
<summary> | |||
企业视频服务器ip地址 | |||
32 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1800_0x1801.ServerPort"> | |||
<summary> | |||
企业视频服务器端口号 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1800_0x1802"> | |||
<summary> | |||
主动请求停止实时音视频传输应答消息 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1800_0x1802.Result"> | |||
<summary> | |||
应答结果 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1900"> | |||
<summary> | |||
主链路远程录像检索交互消息 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1900_0x1901"> | |||
<summary> | |||
主动上传音视频资源目录信息消息 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1900_0x1901.ItemNum"> | |||
<summary> | |||
资源目录项数目 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1900_0x1901.ItemList"> | |||
<summary> | |||
资源目录项列表 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1900_0x1902"> | |||
<summary> | |||
查询音视频资源目录应答消息 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1900_0x1902.Result"> | |||
<summary> | |||
应答结果 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1900_0x1902.ItemNum"> | |||
<summary> | |||
资源目录项数目 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1900_0x1902.ItemList"> | |||
<summary> | |||
资源目录项列表 | |||
与JT808_JT1078_0x1900_0x1901共用同一个子类 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1900_Record"> | |||
<summary> | |||
上传音视频资源目录项 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1900_Record.ChannelId"> | |||
<summary> | |||
逻辑通道号 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1900_Record.StartTime"> | |||
<summary> | |||
UTC时间 开始 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1900_Record.EndTime"> | |||
<summary> | |||
UTC时间 结束 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1900_Record.AlarmType"> | |||
<summary> | |||
报警标志物 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1900_Record.AVItemType"> | |||
<summary> | |||
音视频类型 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1900_Record.StreamType"> | |||
<summary> | |||
码流类型 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1900_Record.MemType"> | |||
<summary> | |||
存储器类型 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1900_Record.FileSize"> | |||
<summary> | |||
文件大小 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1A00"> | |||
<summary> | |||
主链路远程录像回放交互消息 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1A00_0x1A01"> | |||
<summary> | |||
远程录像回放请求应答消息 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1A00_0x1A01.ServerIp"> | |||
<summary> | |||
企业视频服务器ip地址 | |||
32 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1A00_0x1A01.ServerPort"> | |||
<summary> | |||
企业视频服务器端口号 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1A00_0x1A01.Result"> | |||
<summary> | |||
应答结果 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1A00_0x1A02"> | |||
<summary> | |||
远程录像回放控制应答消息 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1A00_0x1A02.Result"> | |||
<summary> | |||
应答结果 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1B00"> | |||
<summary> | |||
主链路远程录像下载交互消息 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1B00_0x1B01"> | |||
<summary> | |||
远程录像下载请求应答消息 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1B00_0x1B01.Result"> | |||
<summary> | |||
应答结果 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1B00_0x1B01.SessionId"> | |||
<summary> | |||
对应平台文件上传消息的流水号 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1B00_0x1B02"> | |||
<summary> | |||
远程录像下载通知消息 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1B00_0x1B02.Result"> | |||
<summary> | |||
应答结果 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1B00_0x1B02.SessionId"> | |||
<summary> | |||
对应平台文件上传消息的流水号 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1B00_0x1B02.ServerIp"> | |||
<summary> | |||
FTP服务器ip地址 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1B00_0x1B02.TcpPort"> | |||
<summary> | |||
FTP服务器端口 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1B00_0x1B02.UserName"> | |||
<summary> | |||
FTP用户名 | |||
49 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1B00_0x1B02.Password"> | |||
<summary> | |||
FTP密码 | |||
22 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1B00_0x1B02.FilePath"> | |||
<summary> | |||
文件存储路径 | |||
200 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1B00_0x1B03"> | |||
<summary> | |||
远程录像下载控制应答消息 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x1B00_0x1B03.Result"> | |||
<summary> | |||
应答结果 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9700"> | |||
<summary> | |||
从链路时效口令交互消息 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9700_0x9702"> | |||
<summary> | |||
时效口令请求应答消息 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9800"> | |||
<summary> | |||
从链路实时音视频交互信息 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9800_0x9801"> | |||
<summary> | |||
实时音视频请求消息 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9800_0x9801.ChannelId"> | |||
<summary> | |||
逻辑通道号 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9800_0x9801.AVitemType"> | |||
<summary> | |||
音视频类型 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9800_0x9801.AuthorizeCode"> | |||
<summary> | |||
时效口令 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9800_0x9801.GnssData"> | |||
<summary> | |||
车辆进入跨域地区后5min之内的任何位置,仅跨域访问请求时使用此字段 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9800_0x9802"> | |||
<summary> | |||
主动请求停止实时音视频传输消息 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9800_0x9802.ChannelId"> | |||
<summary> | |||
逻辑通道号 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9800_0x9802.AVitemType"> | |||
<summary> | |||
音视频类型 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9900"> | |||
<summary> | |||
从链路远程录像检索交互消息 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9900_0x9901"> | |||
<summary> | |||
主动上传音视频资源目录信息应答消息 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9900_0x9901.Result"> | |||
<summary> | |||
应答结果 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9900_0x9901.ItemNumber"> | |||
<summary> | |||
资源目录总数 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9900_0x9902"> | |||
<summary> | |||
查询音视频资源目录请求消息 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9900_0x9902.ChannelId"> | |||
<summary> | |||
逻辑通道号 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9900_0x9902.StartTime"> | |||
<summary> | |||
起始时间 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9900_0x9902.EndTime"> | |||
<summary> | |||
终止时间 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9900_0x9902.AlarmType"> | |||
<summary> | |||
报警类型 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9900_0x9902.AVItemType"> | |||
<summary> | |||
音视频类型 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9900_0x9902.StreamType"> | |||
<summary> | |||
码流类型 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9900_0x9902.MemType"> | |||
<summary> | |||
存储器类型 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9900_0x9902.AuthorizeCode"> | |||
<summary> | |||
时效口令 | |||
64 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9900_0x9902.GnssData"> | |||
<summary> | |||
车辆进入跨域地区后5min之内任一位置,仅跨域访问请求时,使用此字段 | |||
36 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9A00"> | |||
<summary> | |||
从链路远程录像回放交互消息 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9A00_0x9A01"> | |||
<summary> | |||
远程录像回放请求消息 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9A00_0x9A01.ChannelId"> | |||
<summary> | |||
逻辑通道号 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9A00_0x9A01.AVItemType"> | |||
<summary> | |||
音视频类型 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9A00_0x9A01.StreamType"> | |||
<summary> | |||
码流类型 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9A00_0x9A01.MemType"> | |||
<summary> | |||
存储器类型 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9A00_0x9A01.PlayBackStartTime"> | |||
<summary> | |||
回放起始时间 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9A00_0x9A01.PlayBackEndTime"> | |||
<summary> | |||
回放结束时间 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9A00_0x9A01.AuthorizeCode"> | |||
<summary> | |||
时效口令 | |||
64 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9A00_0x9A01.GnssData"> | |||
<summary> | |||
车辆进入跨域地区后5min之内任一位置,仅跨域访问请求时,使用此字段 | |||
36 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9A00_0x9A02"> | |||
<summary> | |||
远程录像回放控制消息 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9A00_0x9A02.ControlType"> | |||
<summary> | |||
控制类型 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9A00_0x9A02.FastTime"> | |||
<summary> | |||
快进或倒退倍数 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9A00_0x9A02.DateTime"> | |||
<summary> | |||
拖动位置 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9B00"> | |||
<summary> | |||
从链路远程录像下载交互消息 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9B00_0x9B01"> | |||
<summary> | |||
远程录像下载请求消息 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9B00_0x9B01.ChannelId"> | |||
<summary> | |||
逻辑通道号 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9B00_0x9B01.StartTime"> | |||
<summary> | |||
起始时间 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9B00_0x9B01.EndTime"> | |||
<summary> | |||
终止时间 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9B00_0x9B01.AlarmType"> | |||
<summary> | |||
报警类型 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9B00_0x9B01.AVItemType"> | |||
<summary> | |||
音视频类型 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9B00_0x9B01.StreamType"> | |||
<summary> | |||
码流类型 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9B00_0x9B01.MemType"> | |||
<summary> | |||
存储器类型 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9B00_0x9B01.FileSize"> | |||
<summary> | |||
文件大小 byte | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9B00_0x9B01.AuthorizeCode"> | |||
<summary> | |||
时效口令 | |||
64 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9B00_0x9B01.GnssData"> | |||
<summary> | |||
车辆进入跨域地区后5min之内任一位置,仅跨域访问请求时,使用此字段 | |||
36 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9B00_0x9B02"> | |||
<summary> | |||
远程录像下载完成通知应答消息 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9B00_0x9B02.Result"> | |||
<summary> | |||
应答结果 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9B00_0x9B02.SessionId"> | |||
<summary> | |||
对应平台文件上传消息的流水号 | |||
</summary> | |||
</member> | |||
<member name="T:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9B00_0x9B03"> | |||
<summary> | |||
远程录像下载控制消息 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9B00_0x9B03.SessionId"> | |||
<summary> | |||
对应平台文件上传消息的流水号 | |||
</summary> | |||
</member> | |||
<member name="P:JT809.Protocol.Extensions.JT1078.MessageBody.JT809_JT1078_0x9B00_0x9B03.Type"> | |||
<summary> | |||
控制类型 | |||
</summary> | |||
</member> | |||
</members> | |||
</doc> |
@@ -1,5 +1,8 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Enums; | |||
using JT809.Protocol.Exceptions; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
@@ -9,9 +12,68 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// <summary> | |||
/// 主链路时效口令交互消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809BodiesFormatter<JT809_JT1078_0x1700>))] | |||
public class JT809_JT1078_0x1700 : JT809ExchangeMessageBodies | |||
public class JT809_JT1078_0x1700 : JT809ExchangeMessageBodies,IJT809MessagePackFormatter<JT809_JT1078_0x1700> | |||
{ | |||
public override ushort MsgId { get; }=JT809_JT1078_BusinessType.主链路时效口令业务类.ToUInt16Value(); | |||
public override JT809_LinkType LinkType { get; } = JT809_LinkType.main; | |||
public override string Description { get; }= "主链路时效口令交互消息"; | |||
public JT809_JT1078_0x1700 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1700 value = new JT809_JT1078_0x1700(); | |||
value.VehicleNo = reader.ReadString(21); | |||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||
value.SubBusinessType = reader.ReadUInt16(); | |||
value.DataLength = reader.ReadUInt32(); | |||
try | |||
{ | |||
if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance)) | |||
{ | |||
if (instance is JT809SubBodies subBodies) | |||
{ | |||
if (!subBodies.SkipSerialization) | |||
{ | |||
value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||
instance, | |||
ref reader, config); | |||
} | |||
} | |||
} | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
return value; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1700 value, IJT809Config config) | |||
{ | |||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||
writer.WriteByte((byte)value.VehicleColor); | |||
writer.WriteUInt16(value.SubBusinessType); | |||
try | |||
{ | |||
// 先写入内容,然后在根据内容反写内容长度 | |||
writer.Skip(4, out int subContentLengthPosition); | |||
if (value.SubBodies != null) | |||
{ | |||
if (!value.SubBodies.SkipSerialization) | |||
{ | |||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||
value.SubBodies, | |||
ref writer, value.SubBodies, | |||
config); | |||
} | |||
} | |||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
} | |||
} | |||
} |
@@ -1,5 +1,6 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
@@ -9,8 +10,7 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// <summary> | |||
/// 时效口令上报消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x1700_0x1701_Formatter))] | |||
public class JT809_JT1078_0x1700_0x1701 : JT809SubBodies | |||
public class JT809_JT1078_0x1700_0x1701 : JT809SubBodies,IJT809MessagePackFormatter<JT809_JT1078_0x1700_0x1701> | |||
{ | |||
/// <summary> | |||
/// 企业视频监控平台唯一编码,平台所属企业行政区域代码+平台公共编号 | |||
@@ -24,5 +24,25 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// 跨域地区政府平台使用的时效口令 | |||
/// </summary> | |||
public byte[] AuthorizeCode2 { get; set; } | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.时效口令上报消息.ToUInt16Value(); | |||
public override string Description { get; }= "时效口令上报消息"; | |||
public JT809_JT1078_0x1700_0x1701 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1700_0x1701 jT808_JT1078_0X1701 = new JT809_JT1078_0x1700_0x1701(); | |||
jT808_JT1078_0X1701.PlateFormId = reader.ReadArray(11).ToArray(); | |||
jT808_JT1078_0X1701.AuthorizeCode1 = reader.ReadArray(64).ToArray(); | |||
jT808_JT1078_0X1701.AuthorizeCode2 = reader.ReadArray(64).ToArray(); | |||
return jT808_JT1078_0X1701; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1700_0x1701 value, IJT809Config config) | |||
{ | |||
writer.WriteArray(value.PlateFormId); | |||
writer.WriteArray(value.AuthorizeCode1); | |||
writer.WriteArray(value.AuthorizeCode2); | |||
} | |||
} | |||
} |
@@ -1,5 +1,4 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
@@ -9,9 +8,12 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// <summary> | |||
/// 时效口令请求消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x1700_0x1702_Formatter))] | |||
public class JT809_JT1078_0x1700_0x1702 : JT809SubBodies | |||
{ | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.时效口令请求消息.ToUInt16Value(); | |||
public override string Description => "时效口令请求消息"; | |||
public override bool SkipSerialization { get; set; } = true; | |||
} | |||
} |
@@ -1,5 +1,7 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Enums; | |||
using JT809.Protocol.Exceptions; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
@@ -9,9 +11,68 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// <summary> | |||
/// 主链路实时音视频交互消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809BodiesFormatter<JT809_JT1078_0x1800>))] | |||
public class JT809_JT1078_0x1800 : JT809ExchangeMessageBodies | |||
public class JT809_JT1078_0x1800 : JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_JT1078_0x1800> | |||
{ | |||
public override ushort MsgId { get; } | |||
public override JT809_LinkType LinkType { get; } = JT809_LinkType.main; | |||
public override string Description { get; } = "主链路实时音视频交互消息"; | |||
public JT809_JT1078_0x1800 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1800 value = new JT809_JT1078_0x1800(); | |||
value.VehicleNo = reader.ReadString(21); | |||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||
value.SubBusinessType = reader.ReadUInt16(); | |||
value.DataLength = reader.ReadUInt32(); | |||
try | |||
{ | |||
if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance)) | |||
{ | |||
if (instance is JT809SubBodies subBodies) | |||
{ | |||
if (!subBodies.SkipSerialization) | |||
{ | |||
value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||
instance, | |||
ref reader, config); | |||
} | |||
} | |||
} | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
return value; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1800 value, IJT809Config config) | |||
{ | |||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||
writer.WriteByte((byte)value.VehicleColor); | |||
writer.WriteUInt16(value.SubBusinessType); | |||
try | |||
{ | |||
// 先写入内容,然后在根据内容反写内容长度 | |||
writer.Skip(4, out int subContentLengthPosition); | |||
if (value.SubBodies != null) | |||
{ | |||
if (!value.SubBodies.SkipSerialization) | |||
{ | |||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||
value.SubBodies, | |||
ref writer, value.SubBodies, | |||
config); | |||
} | |||
} | |||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
} | |||
} | |||
} |
@@ -1,5 +1,6 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
@@ -9,8 +10,7 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// <summary> | |||
/// 实时音视频请求应答消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x1800_0x1801_Formatter))] | |||
public class JT809_JT1078_0x1800_0x1801 : JT809SubBodies | |||
public class JT809_JT1078_0x1800_0x1801 : JT809SubBodies, IJT809MessagePackFormatter<JT809_JT1078_0x1800_0x1801> | |||
{ | |||
/// <summary> | |||
/// 应答结果 | |||
@@ -25,5 +25,25 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// 企业视频服务器端口号 | |||
/// </summary> | |||
public ushort ServerPort { get; set; } | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.实时音视频请求应答消息.ToUInt16Value(); | |||
public override string Description { get; } = "实时音视频请求应答消息"; | |||
public JT809_JT1078_0x1800_0x1801 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1800_0x1801 jT808_JT1078_0x1800_0x1801 = new JT809_JT1078_0x1800_0x1801(); | |||
jT808_JT1078_0x1800_0x1801.Result = reader.ReadByte(); | |||
jT808_JT1078_0x1800_0x1801.ServerIp = reader.ReadString(32); | |||
jT808_JT1078_0x1800_0x1801.ServerPort = reader.ReadUInt16(); | |||
return jT808_JT1078_0x1800_0x1801; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1800_0x1801 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.Result); | |||
writer.WriteStringPadLeft(value.ServerIp, 32); | |||
writer.WriteUInt16(value.ServerPort); | |||
} | |||
} | |||
} |
@@ -1,5 +1,6 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
@@ -9,12 +10,27 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// <summary> | |||
/// 主动请求停止实时音视频传输应答消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x1800_0x1802_Formatter))] | |||
public class JT809_JT1078_0x1800_0x1802 : JT809SubBodies | |||
public class JT809_JT1078_0x1800_0x1802 : JT809SubBodies, IJT809MessagePackFormatter<JT809_JT1078_0x1800_0x1802> | |||
{ | |||
/// <summary> | |||
/// 应答结果 | |||
/// </summary> | |||
public byte Result { get; set; } | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.主动请求停止实时音视频传输应答消息.ToUInt16Value(); | |||
public override string Description { get; } = "主动请求停止实时音视频传输应答消息"; | |||
public JT809_JT1078_0x1800_0x1802 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1800_0x1802 jT808_JT1078_0x1800_0x1802 = new JT809_JT1078_0x1800_0x1802(); | |||
jT808_JT1078_0x1800_0x1802.Result = reader.ReadByte(); | |||
return jT808_JT1078_0x1800_0x1802; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1800_0x1802 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.Result); | |||
} | |||
} | |||
} |
@@ -1,5 +1,8 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Enums; | |||
using JT809.Protocol.Exceptions; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
@@ -9,9 +12,68 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// <summary> | |||
/// 主链路远程录像检索交互消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809BodiesFormatter<JT809_JT1078_0x1900>))] | |||
public class JT809_JT1078_0x1900 : JT809ExchangeMessageBodies | |||
public class JT809_JT1078_0x1900 : JT809ExchangeMessageBodies,IJT809MessagePackFormatter<JT809_JT1078_0x1900> | |||
{ | |||
public override ushort MsgId { get; } = JT809_JT1078_BusinessType.主链路远程录像检索业务类.ToUInt16Value(); | |||
public override JT809_LinkType LinkType { get; } = JT809_LinkType.main; | |||
public override string Description { get; } = "主链路远程录像检索交互消息"; | |||
public JT809_JT1078_0x1900 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1900 value = new JT809_JT1078_0x1900(); | |||
value.VehicleNo = reader.ReadString(21); | |||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||
value.SubBusinessType = reader.ReadUInt16(); | |||
value.DataLength = reader.ReadUInt32(); | |||
try | |||
{ | |||
if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance)) | |||
{ | |||
if (instance is JT809SubBodies subBodies) | |||
{ | |||
if (!subBodies.SkipSerialization) | |||
{ | |||
value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||
instance, | |||
ref reader, config); | |||
} | |||
} | |||
} | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
return value; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1900 value, IJT809Config config) | |||
{ | |||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||
writer.WriteByte((byte)value.VehicleColor); | |||
writer.WriteUInt16(value.SubBusinessType); | |||
try | |||
{ | |||
// 先写入内容,然后在根据内容反写内容长度 | |||
writer.Skip(4, out int subContentLengthPosition); | |||
if (value.SubBodies != null) | |||
{ | |||
if (!value.SubBodies.SkipSerialization) | |||
{ | |||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||
value.SubBodies, | |||
ref writer, value.SubBodies, | |||
config); | |||
} | |||
} | |||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
} | |||
} | |||
} |
@@ -1,16 +1,14 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using System; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
{ | |||
/// <summary> | |||
/// 主动上传音视频资源目录信息消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x1900_0x1901_Formatter))] | |||
public class JT809_JT1078_0x1900_0x1901 : JT809SubBodies | |||
public class JT809_JT1078_0x1900_0x1901 : JT809SubBodies, IJT809MessagePackFormatter<JT809_JT1078_0x1900_0x1901> | |||
{ | |||
/// <summary> | |||
/// 资源目录项数目 | |||
@@ -20,5 +18,40 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// 资源目录项列表 | |||
/// </summary> | |||
public List<JT809_JT1078_0x1900_Record> ItemList { get; set; } | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.主动上传音视频资源目录信息消息.ToUInt16Value(); | |||
public override string Description { get; } = "主动上传音视频资源目录信息消息"; | |||
public JT809_JT1078_0x1900_0x1901 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1900_0x1901 jT808_JT1078_0x1900_0x1901 = new JT809_JT1078_0x1900_0x1901(); | |||
jT808_JT1078_0x1900_0x1901.ItemNum = reader.ReadUInt32(); | |||
if (jT808_JT1078_0x1900_0x1901.ItemNum > 0) | |||
{ | |||
List<JT809_JT1078_0x1900_Record> jT808_JT1078_0x1900_0x1901_RecordList = new List<JT809_JT1078_0x1900_Record>(); | |||
var formatter = config.GetMessagePackFormatter<JT809_JT1078_0x1900_Record>(); | |||
for (int i = 0; i < jT808_JT1078_0x1900_0x1901.ItemNum; i++) | |||
{ | |||
var jT808_JT1078_0x1900_0x1901_Record = formatter.Deserialize(ref reader, config); | |||
jT808_JT1078_0x1900_0x1901_RecordList.Add(jT808_JT1078_0x1900_0x1901_Record); | |||
} | |||
jT808_JT1078_0x1900_0x1901.ItemList = jT808_JT1078_0x1900_0x1901_RecordList; | |||
} | |||
return jT808_JT1078_0x1900_0x1901; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1900_0x1901 value, IJT809Config config) | |||
{ | |||
writer.WriteUInt32(value.ItemNum); | |||
if (value.ItemList.Count > 0) | |||
{ | |||
var formatter = config.GetMessagePackFormatter<JT809_JT1078_0x1900_Record>(); | |||
foreach (var item in value.ItemList) | |||
{ | |||
formatter.Serialize(ref writer, item, config); | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -1,16 +1,14 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using System; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
{ | |||
/// <summary> | |||
/// 查询音视频资源目录应答消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x1900_0x1902_Formatter))] | |||
public class JT809_JT1078_0x1900_0x1902 : JT809SubBodies | |||
public class JT809_JT1078_0x1900_0x1902 : JT809SubBodies, IJT809MessagePackFormatter<JT809_JT1078_0x1900_0x1902> | |||
{ | |||
/// <summary> | |||
/// 应答结果 | |||
@@ -25,5 +23,42 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// 与JT808_JT1078_0x1900_0x1901共用同一个子类 | |||
/// </summary> | |||
public List<JT809_JT1078_0x1900_Record> ItemList { get; set; } | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.查询音视频资源目录应答消息.ToUInt16Value(); | |||
public override string Description { get; } = "查询音视频资源目录应答消息"; | |||
public JT809_JT1078_0x1900_0x1902 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1900_0x1902 jT808_JT1078_0x1900_0x1902 = new JT809_JT1078_0x1900_0x1902(); | |||
jT808_JT1078_0x1900_0x1902.Result = reader.ReadByte(); | |||
jT808_JT1078_0x1900_0x1902.ItemNum = reader.ReadUInt32(); | |||
if (jT808_JT1078_0x1900_0x1902.ItemNum > 0) | |||
{ | |||
List<JT809_JT1078_0x1900_Record> jT808_JT1078_0x1900_0x1901_RecordList = new List<JT809_JT1078_0x1900_Record>(); | |||
var formatter = config.GetMessagePackFormatter<JT809_JT1078_0x1900_Record>(); | |||
for (int i = 0; i < jT808_JT1078_0x1900_0x1902.ItemNum; i++) | |||
{ | |||
var jT808_JT1078_0x1900_0x1901_Record = formatter.Deserialize(ref reader, config); | |||
jT808_JT1078_0x1900_0x1901_RecordList.Add(jT808_JT1078_0x1900_0x1901_Record); | |||
} | |||
jT808_JT1078_0x1900_0x1902.ItemList = jT808_JT1078_0x1900_0x1901_RecordList; | |||
} | |||
return jT808_JT1078_0x1900_0x1902; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1900_0x1902 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.Result); | |||
writer.WriteUInt32(value.ItemNum); | |||
if (value.ItemList.Count > 0) | |||
{ | |||
var formatter = config.GetMessagePackFormatter<JT809_JT1078_0x1900_Record>(); | |||
foreach (var item in value.ItemList) | |||
{ | |||
formatter.Serialize(ref writer, item, config); | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -1,5 +1,5 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
@@ -9,8 +9,7 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// <summary> | |||
/// 上传音视频资源目录项 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x1900_0x1901_Record_Formatter))] | |||
public class JT809_JT1078_0x1900_Record | |||
public class JT809_JT1078_0x1900_Record : IJT809MessagePackFormatter<JT809_JT1078_0x1900_Record> | |||
{ | |||
/// <summary> | |||
/// 逻辑通道号 | |||
@@ -27,7 +26,7 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// <summary> | |||
/// 报警标志物 | |||
/// </summary> | |||
public UInt64 AlarmType { get; set; } | |||
public ulong AlarmType { get; set; } | |||
/// <summary> | |||
/// 音视频类型 | |||
/// </summary> | |||
@@ -44,5 +43,30 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// 文件大小 | |||
/// </summary> | |||
public uint FileSize { get; set; } | |||
public JT809_JT1078_0x1900_Record Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1900_Record jT808_JT1078_0x1900_0x1901_Record = new JT809_JT1078_0x1900_Record(); | |||
jT808_JT1078_0x1900_0x1901_Record.ChannelId = reader.ReadByte(); | |||
jT808_JT1078_0x1900_0x1901_Record.StartTime = reader.ReadUTCDateTime(); | |||
jT808_JT1078_0x1900_0x1901_Record.EndTime = reader.ReadUTCDateTime(); | |||
jT808_JT1078_0x1900_0x1901_Record.AlarmType = reader.ReadUInt64(); | |||
jT808_JT1078_0x1900_0x1901_Record.AVItemType = reader.ReadByte(); | |||
jT808_JT1078_0x1900_0x1901_Record.StreamType = reader.ReadByte(); | |||
jT808_JT1078_0x1900_0x1901_Record.MemType = reader.ReadByte(); | |||
jT808_JT1078_0x1900_0x1901_Record.FileSize = reader.ReadUInt32(); | |||
return jT808_JT1078_0x1900_0x1901_Record; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1900_Record value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.ChannelId); | |||
writer.WriteUTCDateTime(value.StartTime); | |||
writer.WriteUTCDateTime(value.EndTime); | |||
writer.WriteUInt64(value.AlarmType); | |||
writer.WriteByte(value.AVItemType); | |||
writer.WriteByte(value.StreamType); | |||
writer.WriteByte(value.MemType); | |||
writer.WriteUInt32(value.FileSize); | |||
} | |||
} | |||
} |
@@ -1,17 +1,76 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Enums; | |||
using JT809.Protocol.Exceptions; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
using JT809.Protocol.MessagePack; | |||
namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
{ | |||
/// <summary> | |||
/// 主链路远程录像回放交互消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809BodiesFormatter<JT809_JT1078_0x1A00>))] | |||
public class JT809_JT1078_0x1A00 : JT809ExchangeMessageBodies | |||
public class JT809_JT1078_0x1A00 : JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_JT1078_0x1A00> | |||
{ | |||
public override ushort MsgId { get; } = JT809_JT1078_BusinessType.主链路远程录像回放业务类.ToUInt16Value(); | |||
public override JT809_LinkType LinkType { get; } = JT809_LinkType.main; | |||
public override string Description { get; } = "主链路远程录像回放交互消息"; | |||
public JT809_JT1078_0x1A00 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1A00 value = new JT809_JT1078_0x1A00(); | |||
value.VehicleNo = reader.ReadString(21); | |||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||
value.SubBusinessType = reader.ReadUInt16(); | |||
value.DataLength = reader.ReadUInt32(); | |||
try | |||
{ | |||
if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance)) | |||
{ | |||
if (instance is JT809SubBodies subBodies) | |||
{ | |||
if (!subBodies.SkipSerialization) | |||
{ | |||
value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||
instance, | |||
ref reader, config); | |||
} | |||
} | |||
} | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
return value; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1A00 value, IJT809Config config) | |||
{ | |||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||
writer.WriteByte((byte)value.VehicleColor); | |||
writer.WriteUInt16(value.SubBusinessType); | |||
try | |||
{ | |||
// 先写入内容,然后在根据内容反写内容长度 | |||
writer.Skip(4, out int subContentLengthPosition); | |||
if (value.SubBodies != null) | |||
{ | |||
if (!value.SubBodies.SkipSerialization) | |||
{ | |||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||
value.SubBodies, | |||
ref writer, value.SubBodies, | |||
config); | |||
} | |||
} | |||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
} | |||
} | |||
} |
@@ -1,5 +1,6 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
@@ -9,8 +10,7 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// <summary> | |||
/// 远程录像回放请求应答消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x1A00_0x1A01_Formatter))] | |||
public class JT809_JT1078_0x1A00_0x1A01 : JT809SubBodies | |||
public class JT809_JT1078_0x1A00_0x1A01 : JT809SubBodies, IJT809MessagePackFormatter<JT809_JT1078_0x1A00_0x1A01> | |||
{ | |||
/// <summary> | |||
/// 企业视频服务器ip地址 | |||
@@ -25,5 +25,25 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// 应答结果 | |||
/// </summary> | |||
public byte Result { get; set; } | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.远程录像回放请求应答消息.ToUInt16Value(); | |||
public override string Description { get; } = "远程录像回放请求应答消息"; | |||
public JT809_JT1078_0x1A00_0x1A01 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1A00_0x1A01 jT808_JT1078_0x1A00_0x1A01 = new JT809_JT1078_0x1A00_0x1A01(); | |||
jT808_JT1078_0x1A00_0x1A01.ServerIp = reader.ReadString(32); | |||
jT808_JT1078_0x1A00_0x1A01.ServerPort = reader.ReadUInt16(); | |||
jT808_JT1078_0x1A00_0x1A01.Result = reader.ReadByte(); | |||
return jT808_JT1078_0x1A00_0x1A01; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1A00_0x1A01 value, IJT809Config config) | |||
{ | |||
writer.WriteStringPadLeft(value.ServerIp, 32); | |||
writer.WriteUInt16(value.ServerPort); | |||
writer.WriteByte(value.Result); | |||
} | |||
} | |||
} |
@@ -1,20 +1,33 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
{ | |||
/// <summary> | |||
/// 远程录像回放控制应答消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x1A00_0x1A02_Formatter))] | |||
public class JT809_JT1078_0x1A00_0x1A02 : JT809SubBodies | |||
public class JT809_JT1078_0x1A00_0x1A02 : JT809SubBodies, IJT809MessagePackFormatter<JT809_JT1078_0x1A00_0x1A02> | |||
{ | |||
/// <summary> | |||
/// 应答结果 | |||
/// </summary> | |||
public byte Result { get; set; } | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.远程录像回放控制应答消息.ToUInt16Value(); | |||
public override string Description { get; } = "远程录像回放控制应答消息"; | |||
public JT809_JT1078_0x1A00_0x1A02 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1A00_0x1A02 jT808_JT1078_0x1A00_0x1A02 = new JT809_JT1078_0x1A00_0x1A02(); | |||
jT808_JT1078_0x1A00_0x1A02.Result = reader.ReadByte(); | |||
return jT808_JT1078_0x1A00_0x1A02; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1A00_0x1A02 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.Result); | |||
} | |||
} | |||
} |
@@ -1,17 +1,77 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Enums; | |||
using JT809.Protocol.Exceptions; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
using JT809.Protocol.MessagePack; | |||
namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
{ | |||
/// <summary> | |||
/// 主链路远程录像下载交互消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809BodiesFormatter<JT809_JT1078_0x1B00>))] | |||
public class JT809_JT1078_0x1B00 : JT809ExchangeMessageBodies | |||
public class JT809_JT1078_0x1B00 : JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_JT1078_0x1B00> | |||
{ | |||
public override ushort MsgId { get; } = JT809_JT1078_BusinessType.主链路远程录像下载业务类.ToUInt16Value(); | |||
public override JT809_LinkType LinkType { get; } = JT809_LinkType.main; | |||
public override string Description { get; } = "主链路远程录像下载交互消息"; | |||
public JT809_JT1078_0x1B00 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1B00 value = new JT809_JT1078_0x1B00(); | |||
value.VehicleNo = reader.ReadString(21); | |||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||
value.SubBusinessType = reader.ReadUInt16(); | |||
value.DataLength = reader.ReadUInt32(); | |||
try | |||
{ | |||
if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance)) | |||
{ | |||
if (instance is JT809SubBodies subBodies) | |||
{ | |||
if (!subBodies.SkipSerialization) | |||
{ | |||
value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||
instance, | |||
ref reader, config); | |||
} | |||
} | |||
} | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
return value; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1B00 value, IJT809Config config) | |||
{ | |||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||
writer.WriteByte((byte)value.VehicleColor); | |||
writer.WriteUInt16(value.SubBusinessType); | |||
try | |||
{ | |||
// 先写入内容,然后在根据内容反写内容长度 | |||
writer.Skip(4, out int subContentLengthPosition); | |||
if (value.SubBodies != null) | |||
{ | |||
if (!value.SubBodies.SkipSerialization) | |||
{ | |||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||
value.SubBodies, | |||
ref writer, value.SubBodies, | |||
config); | |||
} | |||
} | |||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
} | |||
} | |||
} |
@@ -1,5 +1,6 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
@@ -9,8 +10,7 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// <summary> | |||
/// 远程录像下载请求应答消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x1B00_0x1B01_Formatter))] | |||
public class JT809_JT1078_0x1B00_0x1B01 : JT809SubBodies | |||
public class JT809_JT1078_0x1B00_0x1B01 : JT809SubBodies, IJT809MessagePackFormatter<JT809_JT1078_0x1B00_0x1B01> | |||
{ | |||
/// <summary> | |||
/// 应答结果 | |||
@@ -20,5 +20,23 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// 对应平台文件上传消息的流水号 | |||
/// </summary> | |||
public ushort SessionId { get; set; } | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.远程录像下载请求应答消息.ToUInt16Value(); | |||
public override string Description { get; } = "远程录像下载请求应答消息"; | |||
public JT809_JT1078_0x1B00_0x1B01 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1B00_0x1B01 jT808_JT1078_0x1B00_0x1B01 = new JT809_JT1078_0x1B00_0x1B01(); | |||
jT808_JT1078_0x1B00_0x1B01.Result = reader.ReadByte(); | |||
jT808_JT1078_0x1B00_0x1B01.SessionId = reader.ReadUInt16(); | |||
return jT808_JT1078_0x1B00_0x1B01; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1B00_0x1B01 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.Result); | |||
writer.WriteUInt16(value.SessionId); | |||
} | |||
} | |||
} |
@@ -1,16 +1,13 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
{ | |||
/// <summary> | |||
/// 远程录像下载通知消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x1B00_0x1B02_Formatter))] | |||
public class JT809_JT1078_0x1B00_0x1B02 : JT809SubBodies | |||
public class JT809_JT1078_0x1B00_0x1B02 : JT809SubBodies, IJT809MessagePackFormatter<JT809_JT1078_0x1B00_0x1B02> | |||
{ | |||
/// <summary> | |||
/// 应答结果 | |||
@@ -43,5 +40,33 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// 200 | |||
/// </summary> | |||
public string FilePath { get; set; } | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.远程录像下载通知消息.ToUInt16Value(); | |||
public override string Description { get; } = "远程录像下载通知消息"; | |||
public JT809_JT1078_0x1B00_0x1B02 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1B00_0x1B02 jT808_JT1078_0x1B00_0x1B02 = new JT809_JT1078_0x1B00_0x1B02(); | |||
jT808_JT1078_0x1B00_0x1B02.Result = reader.ReadByte(); | |||
jT808_JT1078_0x1B00_0x1B02.SessionId = reader.ReadUInt16(); | |||
jT808_JT1078_0x1B00_0x1B02.ServerIp = reader.ReadString(32); | |||
jT808_JT1078_0x1B00_0x1B02.TcpPort = reader.ReadUInt16(); | |||
jT808_JT1078_0x1B00_0x1B02.UserName = reader.ReadString(49); | |||
jT808_JT1078_0x1B00_0x1B02.Password = reader.ReadString(22); | |||
jT808_JT1078_0x1B00_0x1B02.FilePath = reader.ReadString(200); | |||
return jT808_JT1078_0x1B00_0x1B02; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1B00_0x1B02 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.Result); | |||
writer.WriteUInt16(value.SessionId); | |||
writer.WriteStringPadLeft(value.ServerIp, 32); | |||
writer.WriteUInt16(value.TcpPort); | |||
writer.WriteStringPadLeft(value.UserName, 49); | |||
writer.WriteStringPadLeft(value.Password, 22); | |||
writer.WriteStringPadLeft(value.FilePath, 200); | |||
} | |||
} | |||
} |
@@ -1,20 +1,33 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
{ | |||
/// <summary> | |||
/// 远程录像下载控制应答消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x1B00_0x1B03_Formatter))] | |||
public class JT809_JT1078_0x1B00_0x1B03 : JT809SubBodies | |||
public class JT809_JT1078_0x1B00_0x1B03 : JT809SubBodies, IJT809MessagePackFormatter<JT809_JT1078_0x1B00_0x1B03> | |||
{ | |||
/// <summary> | |||
/// 应答结果 | |||
/// </summary> | |||
public byte Result { get; set; } | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.远程录像下载控制应答消息.ToUInt16Value(); | |||
public override string Description { get; } = "远程录像下载控制应答消息"; | |||
public JT809_JT1078_0x1B00_0x1B03 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x1B00_0x1B03 jT808_JT1078_0x1B00_0x1B01 = new JT809_JT1078_0x1B00_0x1B03(); | |||
jT808_JT1078_0x1B00_0x1B01.Result = reader.ReadByte(); | |||
return jT808_JT1078_0x1B00_0x1B01; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1B00_0x1B03 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.Result); | |||
} | |||
} | |||
} |
@@ -1,17 +1,76 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Enums; | |||
using JT809.Protocol.Exceptions; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
using JT809.Protocol.MessagePack; | |||
namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
{ | |||
/// <summary> | |||
/// 从链路时效口令交互消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809BodiesFormatter<JT809_JT1078_0x9700>))] | |||
public class JT809_JT1078_0x9700 : JT809ExchangeMessageBodies | |||
public class JT809_JT1078_0x9700 : JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_JT1078_0x9700> | |||
{ | |||
public override ushort MsgId { get; } = JT809_JT1078_BusinessType.从链路时效口令业务类.ToUInt16Value(); | |||
public override JT809_LinkType LinkType { get; } = JT809_LinkType.subordinate; | |||
public override string Description { get; } = "从链路时效口令交互消息"; | |||
public JT809_JT1078_0x9700 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9700 value = new JT809_JT1078_0x9700(); | |||
value.VehicleNo = reader.ReadString(21); | |||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||
value.SubBusinessType = reader.ReadUInt16(); | |||
value.DataLength = reader.ReadUInt32(); | |||
try | |||
{ | |||
if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance)) | |||
{ | |||
if (instance is JT809SubBodies subBodies) | |||
{ | |||
if (!subBodies.SkipSerialization) | |||
{ | |||
value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||
instance, | |||
ref reader, config); | |||
} | |||
} | |||
} | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
return value; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9700 value, IJT809Config config) | |||
{ | |||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||
writer.WriteByte((byte)value.VehicleColor); | |||
writer.WriteUInt16(value.SubBusinessType); | |||
try | |||
{ | |||
// 先写入内容,然后在根据内容反写内容长度 | |||
writer.Skip(4, out int subContentLengthPosition); | |||
if (value.SubBodies != null) | |||
{ | |||
if (!value.SubBodies.SkipSerialization) | |||
{ | |||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||
value.SubBodies, | |||
ref writer, value.SubBodies, | |||
config); | |||
} | |||
} | |||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
} | |||
} | |||
} |
@@ -1,17 +1,16 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
{ | |||
/// <summary> | |||
/// 时效口令请求应答消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x9700_0x9702_Formatter))] | |||
public class JT809_JT1078_0x9700_0x9702 : JT809SubBodies | |||
{ | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.时效口令请求应答消息.ToUInt16Value(); | |||
public override string Description { get; } = "时效口令请求应答消息"; | |||
public override bool SkipSerialization { get; set; } = true; | |||
} | |||
} |
@@ -1,17 +1,76 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Enums; | |||
using JT809.Protocol.Exceptions; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
using JT809.Protocol.MessagePack; | |||
namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
{ | |||
/// <summary> | |||
/// 从链路实时音视频交互信息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809BodiesFormatter<JT809_JT1078_0x9800>))] | |||
public class JT809_JT1078_0x9800 : JT809ExchangeMessageBodies | |||
public class JT809_JT1078_0x9800 : JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_JT1078_0x9800> | |||
{ | |||
public override ushort MsgId { get; } = JT809_JT1078_BusinessType.从链路实时音视频业务类.ToUInt16Value(); | |||
public override JT809_LinkType LinkType { get; } = JT809_LinkType.subordinate; | |||
public override string Description { get; } = "从链路实时音视频交互信息"; | |||
public JT809_JT1078_0x9800 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9800 value = new JT809_JT1078_0x9800(); | |||
value.VehicleNo = reader.ReadString(21); | |||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||
value.SubBusinessType = reader.ReadUInt16(); | |||
value.DataLength = reader.ReadUInt32(); | |||
try | |||
{ | |||
if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance)) | |||
{ | |||
if (instance is JT809SubBodies subBodies) | |||
{ | |||
if (!subBodies.SkipSerialization) | |||
{ | |||
value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||
instance, | |||
ref reader, config); | |||
} | |||
} | |||
} | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
return value; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9800 value, IJT809Config config) | |||
{ | |||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||
writer.WriteByte((byte)value.VehicleColor); | |||
writer.WriteUInt16(value.SubBusinessType); | |||
try | |||
{ | |||
// 先写入内容,然后在根据内容反写内容长度 | |||
writer.Skip(4, out int subContentLengthPosition); | |||
if (value.SubBodies != null) | |||
{ | |||
if (!value.SubBodies.SkipSerialization) | |||
{ | |||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||
value.SubBodies, | |||
ref writer, value.SubBodies, | |||
config); | |||
} | |||
} | |||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
} | |||
} | |||
} |
@@ -1,16 +1,13 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
{ | |||
/// <summary> | |||
/// 实时音视频请求消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x9800_0x9801_Formatter))] | |||
public class JT809_JT1078_0x9800_0x9801 : JT809SubBodies | |||
public class JT809_JT1078_0x9800_0x9801 : JT809SubBodies, IJT809MessagePackFormatter<JT809_JT1078_0x9800_0x9801> | |||
{ | |||
/// <summary> | |||
/// 逻辑通道号 | |||
@@ -28,5 +25,27 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// 车辆进入跨域地区后5min之内的任何位置,仅跨域访问请求时使用此字段 | |||
/// </summary> | |||
public byte[] GnssData { get; set; } | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.实时音视频请求消息.ToUInt16Value(); | |||
public override string Description { get; } = "实时音视频请求消息"; | |||
public JT809_JT1078_0x9800_0x9801 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9800_0x9801 jT808_JT1078_0x9800_0x9801 = new JT809_JT1078_0x9800_0x9801(); | |||
jT808_JT1078_0x9800_0x9801.ChannelId = reader.ReadByte(); | |||
jT808_JT1078_0x9800_0x9801.AVitemType = reader.ReadByte(); | |||
jT808_JT1078_0x9800_0x9801.AuthorizeCode = reader.ReadArray(64).ToArray(); | |||
jT808_JT1078_0x9800_0x9801.GnssData = reader.ReadArray(36).ToArray(); | |||
return jT808_JT1078_0x9800_0x9801; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9800_0x9801 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.ChannelId); | |||
writer.WriteByte(value.AVitemType); | |||
writer.WriteArray(value.AuthorizeCode); | |||
writer.WriteArray(value.GnssData); | |||
} | |||
} | |||
} |
@@ -1,16 +1,13 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
{ | |||
/// <summary> | |||
/// 主动请求停止实时音视频传输消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x9800_0x9802_Formatter))] | |||
public class JT809_JT1078_0x9800_0x9802 : JT809SubBodies | |||
public class JT809_JT1078_0x9800_0x9802 : JT809SubBodies, IJT809MessagePackFormatter<JT809_JT1078_0x9800_0x9802> | |||
{ | |||
/// <summary> | |||
/// 逻辑通道号 | |||
@@ -20,5 +17,23 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// 音视频类型 | |||
/// </summary> | |||
public byte AVitemType { get; set; } | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.主动请求停止实时音视频传输消息.ToUInt16Value(); | |||
public override string Description { get; } = "主动请求停止实时音视频传输消息"; | |||
public JT809_JT1078_0x9800_0x9802 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9800_0x9802 jT808_JT1078_0x9800_0x9802 = new JT809_JT1078_0x9800_0x9802(); | |||
jT808_JT1078_0x9800_0x9802.ChannelId = reader.ReadByte(); | |||
jT808_JT1078_0x9800_0x9802.AVitemType = reader.ReadByte(); | |||
return jT808_JT1078_0x9800_0x9802; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9800_0x9802 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.ChannelId); | |||
writer.WriteByte(value.AVitemType); | |||
} | |||
} | |||
} |
@@ -1,17 +1,76 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Enums; | |||
using JT809.Protocol.Exceptions; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
using JT809.Protocol.MessagePack; | |||
namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
{ | |||
/// <summary> | |||
/// 从链路远程录像检索交互消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809BodiesFormatter<JT809_JT1078_0x9900>))] | |||
public class JT809_JT1078_0x9900 : JT809ExchangeMessageBodies | |||
public class JT809_JT1078_0x9900 : JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_JT1078_0x9900> | |||
{ | |||
public override ushort MsgId { get; } = JT809_JT1078_BusinessType.从链路远程录像检索业务类.ToUInt16Value(); | |||
public override JT809_LinkType LinkType { get; } = JT809_LinkType.subordinate; | |||
public override string Description { get; } = "从链路远程录像检索交互消息"; | |||
public JT809_JT1078_0x9900 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9900 value = new JT809_JT1078_0x9900(); | |||
value.VehicleNo = reader.ReadString(21); | |||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||
value.SubBusinessType = reader.ReadUInt16(); | |||
value.DataLength = reader.ReadUInt32(); | |||
try | |||
{ | |||
if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance)) | |||
{ | |||
if (instance is JT809SubBodies subBodies) | |||
{ | |||
if (!subBodies.SkipSerialization) | |||
{ | |||
value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||
instance, | |||
ref reader, config); | |||
} | |||
} | |||
} | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
return value; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9900 value, IJT809Config config) | |||
{ | |||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||
writer.WriteByte((byte)value.VehicleColor); | |||
writer.WriteUInt16(value.SubBusinessType); | |||
try | |||
{ | |||
// 先写入内容,然后在根据内容反写内容长度 | |||
writer.Skip(4, out int subContentLengthPosition); | |||
if (value.SubBodies != null) | |||
{ | |||
if (!value.SubBodies.SkipSerialization) | |||
{ | |||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||
value.SubBodies, | |||
ref writer, value.SubBodies, | |||
config); | |||
} | |||
} | |||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
} | |||
} | |||
} |
@@ -1,16 +1,13 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
{ | |||
/// <summary> | |||
/// 主动上传音视频资源目录信息应答消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x9900_0x9901_Formatter))] | |||
public class JT809_JT1078_0x9900_0x9901 : JT809SubBodies | |||
public class JT809_JT1078_0x9900_0x9901 : JT809SubBodies, IJT809MessagePackFormatter<JT809_JT1078_0x9900_0x9901> | |||
{ | |||
/// <summary> | |||
/// 应答结果 | |||
@@ -20,5 +17,23 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// 资源目录总数 | |||
/// </summary> | |||
public byte ItemNumber { get; set; } | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.主动上传音视频资源目录信息应答消息.ToUInt16Value(); | |||
public override string Description { get; } = "主动上传音视频资源目录信息应答消息"; | |||
public JT809_JT1078_0x9900_0x9901 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9900_0x9901 jT808_JT1078_0x9900_0x9901 = new JT809_JT1078_0x9900_0x9901(); | |||
jT808_JT1078_0x9900_0x9901.Result = reader.ReadByte(); | |||
jT808_JT1078_0x9900_0x9901.ItemNumber = reader.ReadByte(); | |||
return jT808_JT1078_0x9900_0x9901; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9900_0x9901 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.Result); | |||
writer.WriteByte(value.ItemNumber); | |||
} | |||
} | |||
} |
@@ -1,16 +1,14 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
{ | |||
/// <summary> | |||
/// 查询音视频资源目录请求消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x9900_0x9902_Formatter))] | |||
public class JT809_JT1078_0x9900_0x9902 : JT809SubBodies | |||
public class JT809_JT1078_0x9900_0x9902 : JT809SubBodies, IJT809MessagePackFormatter<JT809_JT1078_0x9900_0x9902> | |||
{ | |||
/// <summary> | |||
/// 逻辑通道号 | |||
@@ -27,7 +25,7 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// <summary> | |||
/// 报警类型 | |||
/// </summary> | |||
public UInt64 AlarmType { get; set; } | |||
public ulong AlarmType { get; set; } | |||
/// <summary> | |||
/// 音视频类型 | |||
/// </summary> | |||
@@ -50,5 +48,38 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// 36 | |||
/// </summary> | |||
public byte[] GnssData { get; set; } | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.查询音视频资源目录请求消息.ToUInt16Value(); | |||
public override string Description { get; } = "查询音视频资源目录请求消息"; | |||
public JT809_JT1078_0x9900_0x9902 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9900_0x9902 jT808_JT1078_0x9900_0x9902 = new JT809_JT1078_0x9900_0x9902(); | |||
jT808_JT1078_0x9900_0x9902.ChannelId = reader.ReadByte(); | |||
#warning 此处时间8个字节,暂使用utc时间代替 | |||
jT808_JT1078_0x9900_0x9902.StartTime = reader.ReadUTCDateTime(); | |||
jT808_JT1078_0x9900_0x9902.EndTime = reader.ReadUTCDateTime(); | |||
jT808_JT1078_0x9900_0x9902.AlarmType = reader.ReadUInt64(); | |||
jT808_JT1078_0x9900_0x9902.AVItemType = reader.ReadByte(); | |||
jT808_JT1078_0x9900_0x9902.StreamType = reader.ReadByte(); | |||
jT808_JT1078_0x9900_0x9902.MemType = reader.ReadByte(); | |||
jT808_JT1078_0x9900_0x9902.AuthorizeCode = reader.ReadArray(64).ToArray(); | |||
jT808_JT1078_0x9900_0x9902.GnssData = reader.ReadArray(36).ToArray(); | |||
return jT808_JT1078_0x9900_0x9902; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9900_0x9902 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.ChannelId); | |||
writer.WriteUTCDateTime(value.StartTime); | |||
writer.WriteUTCDateTime(value.EndTime); | |||
writer.WriteUInt64(value.AlarmType); | |||
writer.WriteByte(value.AVItemType); | |||
writer.WriteByte(value.StreamType); | |||
writer.WriteByte(value.MemType); | |||
writer.WriteArray(value.AuthorizeCode); | |||
writer.WriteArray(value.GnssData); | |||
} | |||
} | |||
} |
@@ -1,17 +1,76 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Enums; | |||
using JT809.Protocol.Exceptions; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
using JT809.Protocol.MessagePack; | |||
namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
{ | |||
/// <summary> | |||
/// 从链路远程录像回放交互消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809BodiesFormatter<JT809_JT1078_0x9A00>))] | |||
public class JT809_JT1078_0x9A00 : JT809ExchangeMessageBodies | |||
public class JT809_JT1078_0x9A00 : JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_JT1078_0x9A00> | |||
{ | |||
public override ushort MsgId { get; } = JT809_JT1078_BusinessType.从链路远程录像回放业务类.ToUInt16Value(); | |||
public override JT809_LinkType LinkType { get; } = JT809_LinkType.subordinate; | |||
public override string Description { get; } = "从链路远程录像回放交互消息"; | |||
public JT809_JT1078_0x9A00 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9A00 value = new JT809_JT1078_0x9A00(); | |||
value.VehicleNo = reader.ReadString(21); | |||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||
value.SubBusinessType = reader.ReadUInt16(); | |||
value.DataLength = reader.ReadUInt32(); | |||
try | |||
{ | |||
if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance)) | |||
{ | |||
if (instance is JT809SubBodies subBodies) | |||
{ | |||
if (!subBodies.SkipSerialization) | |||
{ | |||
value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||
instance, | |||
ref reader, config); | |||
} | |||
} | |||
} | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
return value; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9A00 value, IJT809Config config) | |||
{ | |||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||
writer.WriteByte((byte)value.VehicleColor); | |||
writer.WriteUInt16(value.SubBusinessType); | |||
try | |||
{ | |||
// 先写入内容,然后在根据内容反写内容长度 | |||
writer.Skip(4, out int subContentLengthPosition); | |||
if (value.SubBodies != null) | |||
{ | |||
if (!value.SubBodies.SkipSerialization) | |||
{ | |||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||
value.SubBodies, | |||
ref writer, value.SubBodies, | |||
config); | |||
} | |||
} | |||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
} | |||
} | |||
} |
@@ -1,16 +1,14 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
{ | |||
/// <summary> | |||
/// 远程录像回放请求消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x9A00_0x9A01_Formatter))] | |||
public class JT809_JT1078_0x9A00_0x9A01 : JT809SubBodies | |||
public class JT809_JT1078_0x9A00_0x9A01 : JT809SubBodies, IJT809MessagePackFormatter<JT809_JT1078_0x9A00_0x9A01> | |||
{ | |||
/// <summary> | |||
/// 逻辑通道号 | |||
@@ -46,5 +44,35 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// 36 | |||
/// </summary> | |||
public byte[] GnssData { get; set; } | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.远程录像回放请求消息.ToUInt16Value(); | |||
public override string Description { get; } = "远程录像回放请求消息"; | |||
public JT809_JT1078_0x9A00_0x9A01 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9A00_0x9A01 jT808_JT1078_0x9A00_0x9A01 = new JT809_JT1078_0x9A00_0x9A01(); | |||
jT808_JT1078_0x9A00_0x9A01.ChannelId = reader.ReadByte(); | |||
jT808_JT1078_0x9A00_0x9A01.AVItemType = reader.ReadByte(); | |||
jT808_JT1078_0x9A00_0x9A01.StreamType = reader.ReadByte(); | |||
jT808_JT1078_0x9A00_0x9A01.MemType = reader.ReadByte(); | |||
jT808_JT1078_0x9A00_0x9A01.PlayBackStartTime = reader.ReadUTCDateTime(); | |||
jT808_JT1078_0x9A00_0x9A01.PlayBackEndTime = reader.ReadUTCDateTime(); | |||
jT808_JT1078_0x9A00_0x9A01.AuthorizeCode = reader.ReadArray(64).ToArray(); | |||
jT808_JT1078_0x9A00_0x9A01.GnssData = reader.ReadArray(36).ToArray(); | |||
return jT808_JT1078_0x9A00_0x9A01; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9A00_0x9A01 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.ChannelId); | |||
writer.WriteByte(value.AVItemType); | |||
writer.WriteByte(value.StreamType); | |||
writer.WriteByte(value.MemType); | |||
writer.WriteUTCDateTime(value.PlayBackStartTime); | |||
writer.WriteUTCDateTime(value.PlayBackEndTime); | |||
writer.WriteArray(value.AuthorizeCode); | |||
writer.WriteArray(value.GnssData); | |||
} | |||
} | |||
} |
@@ -1,16 +1,14 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
{ | |||
/// <summary> | |||
/// 远程录像回放控制消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x9A00_0x9A02_Formatter))] | |||
public class JT809_JT1078_0x9A00_0x9A02 : JT809SubBodies | |||
public class JT809_JT1078_0x9A00_0x9A02 : JT809SubBodies, IJT809MessagePackFormatter<JT809_JT1078_0x9A00_0x9A02> | |||
{ | |||
/// <summary> | |||
/// 控制类型 | |||
@@ -24,5 +22,24 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// 拖动位置 | |||
/// </summary> | |||
public DateTime DateTime { get; set; } | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.远程录像回放控制消息.ToUInt16Value(); | |||
public override string Description { get; } = "远程录像回放控制消息"; | |||
public JT809_JT1078_0x9A00_0x9A02 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9A00_0x9A02 jT808_JT1078_0x9A00_0x9A02 = new JT809_JT1078_0x9A00_0x9A02(); | |||
jT808_JT1078_0x9A00_0x9A02.ControlType = reader.ReadByte(); | |||
jT808_JT1078_0x9A00_0x9A02.FastTime = reader.ReadByte(); | |||
jT808_JT1078_0x9A00_0x9A02.DateTime = reader.ReadUTCDateTime(); | |||
return jT808_JT1078_0x9A00_0x9A02; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9A00_0x9A02 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.ControlType); | |||
writer.WriteByte(value.FastTime); | |||
writer.WriteUTCDateTime(value.DateTime); | |||
} | |||
} | |||
} |
@@ -1,5 +1,8 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Enums; | |||
using JT809.Protocol.Exceptions; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
@@ -9,9 +12,68 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// <summary> | |||
/// 从链路远程录像下载交互消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809BodiesFormatter<JT809_JT1078_0x9B00>))] | |||
public class JT809_JT1078_0x9B00 : JT809ExchangeMessageBodies | |||
public class JT809_JT1078_0x9B00 : JT809ExchangeMessageBodies, IJT809MessagePackFormatter<JT809_JT1078_0x9B00> | |||
{ | |||
public override ushort MsgId { get; } = JT809_JT1078_BusinessType.从链路远程录像下载业务类.ToUInt16Value(); | |||
public override JT809_LinkType LinkType { get; } = JT809_LinkType.subordinate; | |||
public override string Description { get; } = "从链路远程录像下载交互消息"; | |||
public JT809_JT1078_0x9B00 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9B00 value = new JT809_JT1078_0x9B00(); | |||
value.VehicleNo = reader.ReadString(21); | |||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||
value.SubBusinessType = reader.ReadUInt16(); | |||
value.DataLength = reader.ReadUInt32(); | |||
try | |||
{ | |||
if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance)) | |||
{ | |||
if (instance is JT809SubBodies subBodies) | |||
{ | |||
if (!subBodies.SkipSerialization) | |||
{ | |||
value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize( | |||
instance, | |||
ref reader, config); | |||
} | |||
} | |||
} | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
return value; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9B00 value, IJT809Config config) | |||
{ | |||
writer.WriteStringPadRight(value.VehicleNo, 21); | |||
writer.WriteByte((byte)value.VehicleColor); | |||
writer.WriteUInt16(value.SubBusinessType); | |||
try | |||
{ | |||
// 先写入内容,然后在根据内容反写内容长度 | |||
writer.Skip(4, out int subContentLengthPosition); | |||
if (value.SubBodies != null) | |||
{ | |||
if (!value.SubBodies.SkipSerialization) | |||
{ | |||
JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( | |||
value.SubBodies, | |||
ref writer, value.SubBodies, | |||
config); | |||
} | |||
} | |||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
} | |||
} | |||
} |
@@ -1,5 +1,8 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
@@ -9,8 +12,7 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// <summary> | |||
/// 远程录像下载请求消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x9B00_0x9B01_Formatter))] | |||
public class JT809_JT1078_0x9B00_0x9B01 : JT809SubBodies | |||
public class JT809_JT1078_0x9B00_0x9B01 : JT809SubBodies, IJT809MessagePackFormatter<JT809_JT1078_0x9B00_0x9B01> | |||
{ | |||
/// <summary> | |||
/// 逻辑通道号 | |||
@@ -27,7 +29,7 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// <summary> | |||
/// 报警类型 | |||
/// </summary> | |||
public UInt64 AlarmType { get; set; } | |||
public ulong AlarmType { get; set; } | |||
/// <summary> | |||
/// 音视频类型 | |||
/// </summary> | |||
@@ -54,5 +56,38 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// 36 | |||
/// </summary> | |||
public byte[] GnssData { get; set; } | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.远程录像下载请求消息.ToUInt16Value(); | |||
public override string Description { get; } = "远程录像下载请求消息"; | |||
public JT809_JT1078_0x9B00_0x9B01 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9B00_0x9B01 jT808_JT1078_0x9B00_0x9B01 = new JT809_JT1078_0x9B00_0x9B01(); | |||
jT808_JT1078_0x9B00_0x9B01.ChannelId = reader.ReadByte(); | |||
jT808_JT1078_0x9B00_0x9B01.StartTime = reader.ReadUTCDateTime(); | |||
jT808_JT1078_0x9B00_0x9B01.EndTime = reader.ReadUTCDateTime(); | |||
jT808_JT1078_0x9B00_0x9B01.AlarmType = reader.ReadUInt64(); | |||
jT808_JT1078_0x9B00_0x9B01.AVItemType = reader.ReadByte(); | |||
jT808_JT1078_0x9B00_0x9B01.StreamType = reader.ReadByte(); | |||
jT808_JT1078_0x9B00_0x9B01.MemType = reader.ReadByte(); | |||
jT808_JT1078_0x9B00_0x9B01.FileSize = reader.ReadUInt32(); | |||
jT808_JT1078_0x9B00_0x9B01.AuthorizeCode = reader.ReadArray(64).ToArray(); | |||
jT808_JT1078_0x9B00_0x9B01.GnssData = reader.ReadArray(36).ToArray(); | |||
return jT808_JT1078_0x9B00_0x9B01; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9B00_0x9B01 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.ChannelId); | |||
writer.WriteUTCDateTime(value.StartTime); | |||
writer.WriteUTCDateTime(value.EndTime); | |||
writer.WriteUInt64(value.AlarmType); | |||
writer.WriteByte(value.AVItemType); | |||
writer.WriteByte(value.StreamType); | |||
writer.WriteByte(value.MemType); | |||
writer.WriteUInt32(value.FileSize); | |||
writer.WriteArray(value.AuthorizeCode); | |||
writer.WriteArray(value.GnssData); | |||
} | |||
} | |||
} |
@@ -1,16 +1,13 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
{ | |||
/// <summary> | |||
/// 远程录像下载完成通知应答消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x9B00_0x9B02_Formatter))] | |||
public class JT809_JT1078_0x9B00_0x9B02 : JT809SubBodies | |||
public class JT809_JT1078_0x9B00_0x9B02 : JT809SubBodies,IJT809MessagePackFormatter<JT809_JT1078_0x9B00_0x9B02> | |||
{ | |||
/// <summary> | |||
/// 应答结果 | |||
@@ -20,5 +17,23 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// 对应平台文件上传消息的流水号 | |||
/// </summary> | |||
public ushort SessionId { get; set; } | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.远程录像下载完成通知应答消息.ToUInt16Value(); | |||
public override string Description { get; } = "远程录像下载完成通知应答消息"; | |||
public JT809_JT1078_0x9B00_0x9B02 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9B00_0x9B02 jT808_JT1078_0x9B00_0x9B02 = new JT809_JT1078_0x9B00_0x9B02(); | |||
jT808_JT1078_0x9B00_0x9B02.Result = reader.ReadByte(); | |||
jT808_JT1078_0x9B00_0x9B02.SessionId = reader.ReadUInt16(); | |||
return jT808_JT1078_0x9B00_0x9B02; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9B00_0x9B02 value, IJT809Config config) | |||
{ | |||
writer.WriteByte(value.Result); | |||
writer.WriteUInt16(value.SessionId); | |||
} | |||
} | |||
} |
@@ -1,5 +1,6 @@ | |||
using JT809.Protocol.Attributes; | |||
using JT809.Protocol.Extensions.JT1078.Formatters; | |||
using JT809.Protocol.Extensions.JT1078.Enums; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
@@ -9,8 +10,7 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// <summary> | |||
/// 远程录像下载控制消息 | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_JT1078_0x9B00_0x9B03_Formatter))] | |||
public class JT809_JT1078_0x9B00_0x9B03 : JT809SubBodies | |||
public class JT809_JT1078_0x9B00_0x9B03 : JT809SubBodies, IJT809MessagePackFormatter<JT809_JT1078_0x9B00_0x9B03> | |||
{ | |||
/// <summary> | |||
/// 对应平台文件上传消息的流水号 | |||
@@ -20,5 +20,23 @@ namespace JT809.Protocol.Extensions.JT1078.MessageBody | |||
/// 控制类型 | |||
/// </summary> | |||
public byte Type { get; set; } | |||
public override ushort SubMsgId { get; } = JT809_JT1078_SubBusinessType.远程录像下载控制消息.ToUInt16Value(); | |||
public override string Description { get; } = "远程录像下载控制消息"; | |||
public JT809_JT1078_0x9B00_0x9B03 Deserialize(ref JT809MessagePackReader reader, IJT809Config config) | |||
{ | |||
JT809_JT1078_0x9B00_0x9B03 jT808_JT1078_0x9B00_0x9B03 = new JT809_JT1078_0x9B00_0x9B03(); | |||
jT808_JT1078_0x9B00_0x9B03.SessionId = reader.ReadUInt16(); | |||
jT808_JT1078_0x9B00_0x9B03.Type = reader.ReadByte(); | |||
return jT808_JT1078_0x9B00_0x9B03; | |||
} | |||
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9B00_0x9B03 value, IJT809Config config) | |||
{ | |||
writer.WriteUInt16(value.SessionId); | |||
writer.WriteByte(value.Type); | |||
} | |||
} | |||
} |