@@ -9,10 +9,25 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Enums | |||||
/// </summary> | /// </summary> | ||||
public enum ActivePhotographyStrategyType:byte | public enum ActivePhotographyStrategyType:byte | ||||
{ | { | ||||
不开启=0x00, | |||||
定时拍照=0x01, | |||||
定距拍照=0x02, | |||||
保留=0x03, | |||||
不修改参数=0xFF | |||||
/// <summary> | |||||
/// 不开启 | |||||
/// </summary> | |||||
不开启 = 0x00, | |||||
/// <summary> | |||||
/// 定时拍照 | |||||
/// </summary> | |||||
定时拍照 = 0x01, | |||||
/// <summary> | |||||
/// 定距拍照 | |||||
/// </summary> | |||||
定距拍照 = 0x02, | |||||
/// <summary> | |||||
/// 保留 | |||||
/// </summary> | |||||
保留 = 0x03, | |||||
/// <summary> | |||||
/// 不修改参数 | |||||
/// </summary> | |||||
不修改参数 = 0xFF | |||||
} | } | ||||
} | } |
@@ -4,12 +4,30 @@ using System.Text; | |||||
namespace JT808.Protocol.Extensions.JTActiveSafety.Enums | namespace JT808.Protocol.Extensions.JTActiveSafety.Enums | ||||
{ | { | ||||
/// <summary> | |||||
/// 主动安全消息Id | |||||
/// </summary> | |||||
public enum JT808_JTActiveSafety_MsgId : ushort | public enum JT808_JTActiveSafety_MsgId : ushort | ||||
{ | { | ||||
报警附件信息消息= 0x1210, | |||||
文件信息上传= 0x1211, | |||||
/// <summary> | |||||
/// 报警附件信息消息 | |||||
/// </summary> | |||||
报警附件信息消息 = 0x1210, | |||||
/// <summary> | |||||
/// 文件信息上传 | |||||
/// </summary> | |||||
文件信息上传 = 0x1211, | |||||
/// <summary> | |||||
/// 文件上传完成消息 | |||||
/// </summary> | |||||
文件上传完成消息 = 0x1212, | 文件上传完成消息 = 0x1212, | ||||
/// <summary> | |||||
/// 报警附件上传指令 | |||||
/// </summary> | |||||
报警附件上传指令 = 0x9208, | 报警附件上传指令 = 0x9208, | ||||
/// <summary> | |||||
/// 文件上传完成消息应答 | |||||
/// </summary> | |||||
文件上传完成消息应答 = 0x9212, | 文件上传完成消息应答 = 0x9212, | ||||
} | } | ||||
} | } |
@@ -9,12 +9,33 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Enums | |||||
/// </summary> | /// </summary> | ||||
public enum PhotoResolutionType:byte | public enum PhotoResolutionType:byte | ||||
{ | { | ||||
x352_288=0x01, | |||||
x704_288=0x02, | |||||
x704_576=0x03, | |||||
x640_480=0x04, | |||||
x1280_720=0x05, | |||||
x1920_1080=0x06, | |||||
不修改参数=0xFF | |||||
/// <summary> | |||||
/// 352x288 | |||||
/// </summary> | |||||
x352_288 = 0x01, | |||||
/// <summary> | |||||
/// 704x288 | |||||
/// </summary> | |||||
x704_288 = 0x02, | |||||
/// <summary> | |||||
/// 704x576 | |||||
/// </summary> | |||||
x704_576 = 0x03, | |||||
/// <summary> | |||||
/// 640x480 | |||||
/// </summary> | |||||
x640_480 = 0x04, | |||||
/// <summary> | |||||
/// 1280x720 | |||||
/// </summary> | |||||
x1280_720 = 0x05, | |||||
/// <summary> | |||||
/// 1920x1080 | |||||
/// </summary> | |||||
x1920_1080 = 0x06, | |||||
/// <summary> | |||||
/// 不修改参数 | |||||
/// </summary> | |||||
不修改参数 = 0xFF | |||||
} | } | ||||
} | } |
@@ -4,6 +4,9 @@ using System.Text; | |||||
namespace JT808.Protocol.Extensions.JTActiveSafety.Enums | namespace JT808.Protocol.Extensions.JTActiveSafety.Enums | ||||
{ | { | ||||
/// <summary> | |||||
/// USB编号类型 | |||||
/// </summary> | |||||
public enum USBIDType:byte | public enum USBIDType:byte | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
@@ -9,13 +9,37 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Enums | |||||
/// </summary> | /// </summary> | ||||
public enum VideoRecordingResolutionType:byte | public enum VideoRecordingResolutionType:byte | ||||
{ | { | ||||
CIF=0x01, | |||||
HD1=0x02, | |||||
D1=0x03, | |||||
WD1=0x04, | |||||
VGA=0x05, | |||||
_720P=0x06, | |||||
_1080P=0x07, | |||||
不修改参数=0xFF | |||||
/// <summary> | |||||
/// CIF | |||||
/// </summary> | |||||
CIF = 0x01, | |||||
/// <summary> | |||||
/// HD1 | |||||
/// </summary> | |||||
HD1 = 0x02, | |||||
/// <summary> | |||||
/// D1 | |||||
/// </summary> | |||||
D1 = 0x03, | |||||
/// <summary> | |||||
/// WD1 | |||||
/// </summary> | |||||
WD1 = 0x04, | |||||
/// <summary> | |||||
/// VGA | |||||
/// </summary> | |||||
VGA = 0x05, | |||||
/// <summary> | |||||
/// 720P | |||||
/// </summary> | |||||
_720P = 0x06, | |||||
/// <summary> | |||||
/// 1080P | |||||
/// </summary> | |||||
_1080P = 0x07, | |||||
/// <summary> | |||||
/// 不修改参数 | |||||
/// </summary> | |||||
不修改参数 = 0xFF | |||||
} | } | ||||
} | } |
@@ -9,10 +9,25 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Enums | |||||
/// </summary> | /// </summary> | ||||
public enum WorkingConditionType:byte | public enum WorkingConditionType:byte | ||||
{ | { | ||||
正常工作=0x01, | |||||
待机状态=0x02, | |||||
升级维护=0x03, | |||||
/// <summary> | |||||
/// 正常工作 | |||||
/// </summary> | |||||
正常工作 = 0x01, | |||||
/// <summary> | |||||
/// 待机状态 | |||||
/// </summary> | |||||
待机状态 = 0x02, | |||||
/// <summary> | |||||
/// 升级维护 | |||||
/// </summary> | |||||
升级维护 = 0x03, | |||||
/// <summary> | |||||
/// 设备异常 | |||||
/// </summary> | |||||
设备异常 = 0x04, | 设备异常 = 0x04, | ||||
/// <summary> | |||||
/// 断开连接 | |||||
/// </summary> | |||||
断开连接 = 0x10, | 断开连接 = 0x10, | ||||
} | } | ||||
} | } |
@@ -28,7 +28,7 @@ | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="JT808" Version="2.3.7" /> | |||||
<PackageReference Include="JT808" Version="2.3.9" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
@@ -4,6 +4,9 @@ using System.Text; | |||||
namespace JT808.Protocol.Extensions.JTActiveSafety | namespace JT808.Protocol.Extensions.JTActiveSafety | ||||
{ | { | ||||
/// <summary> | |||||
/// 主动安全常量 | |||||
/// </summary> | |||||
public static class JT808_JTActiveSafety_Constants | public static class JT808_JTActiveSafety_Constants | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
@@ -9,8 +9,16 @@ using System.Text; | |||||
namespace JT808.Protocol.Extensions.JTActiveSafety | namespace JT808.Protocol.Extensions.JTActiveSafety | ||||
{ | { | ||||
/// <summary> | |||||
/// 主动安全扩展 | |||||
/// </summary> | |||||
public static class JTActiveSafetyDependencyInjectionExtensions | public static class JTActiveSafetyDependencyInjectionExtensions | ||||
{ | { | ||||
/// <summary> | |||||
/// 添加主动安全 | |||||
/// </summary> | |||||
/// <param name="jT808Builder"></param> | |||||
/// <returns></returns> | |||||
public static IJT808Builder AddJTActiveSafetyConfigure(this IJT808Builder jT808Builder) | public static IJT808Builder AddJTActiveSafetyConfigure(this IJT808Builder jT808Builder) | ||||
{ | { | ||||
jT808Builder.Config.Register(Assembly.GetExecutingAssembly()); | jT808Builder.Config.Register(Assembly.GetExecutingAssembly()); | ||||
@@ -15,7 +15,13 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0200_0x64 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x64>, IJT808Analyze | public class JT808_0x0200_0x64 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x64>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 高级驾驶辅助系统报警信息Id | |||||
/// </summary> | |||||
public override byte AttachInfoId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0200_0x64; | public override byte AttachInfoId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0200_0x64; | ||||
/// <summary> | |||||
/// 高级驾驶辅助系统报警信息附加长度 | |||||
/// </summary> | |||||
public override byte AttachInfoLength { get; set; } = 32; | public override byte AttachInfoLength { get; set; } = 32; | ||||
/// <summary> | /// <summary> | ||||
/// 报警ID | /// 报警ID | ||||
@@ -83,7 +89,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// 报警标识号 | /// 报警标识号 | ||||
/// </summary> | /// </summary> | ||||
public AlarmIdentificationProperty AlarmIdentification { get; set; } | public AlarmIdentificationProperty AlarmIdentification { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x64 value = new JT808_0x0200_0x64(); | JT808_0x0200_0x64 value = new JT808_0x0200_0x64(); | ||||
@@ -259,7 +270,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount); | writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount); | ||||
writer.WriteNumber($"[{value.AlarmIdentification.Retain.ReadNumber()}]预留", value.AlarmIdentification.Retain); | writer.WriteNumber($"[{value.AlarmIdentification.Retain.ReadNumber()}]预留", value.AlarmIdentification.Retain); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0200_0x64 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0200_0x64 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x64 value = new JT808_0x0200_0x64(); | JT808_0x0200_0x64 value = new JT808_0x0200_0x64(); | ||||
@@ -290,7 +306,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
}; | }; | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x64 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x64 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte(value.AttachInfoId); | writer.WriteByte(value.AttachInfoId); | ||||
@@ -15,7 +15,13 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0200_0x65 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x65>, IJT808Analyze | public class JT808_0x0200_0x65 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x65>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 驾驶员状态监测系统报警信息Id | |||||
/// </summary> | |||||
public override byte AttachInfoId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0200_0x65; | public override byte AttachInfoId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0200_0x65; | ||||
/// <summary> | |||||
/// 驾驶员状态监测系统报警信息长度 | |||||
/// </summary> | |||||
public override byte AttachInfoLength { get; set; } = 47; | public override byte AttachInfoLength { get; set; } = 47; | ||||
/// <summary> | /// <summary> | ||||
/// 报警ID | /// 报警ID | ||||
@@ -71,7 +77,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// 报警标识号 | /// 报警标识号 | ||||
/// </summary> | /// </summary> | ||||
public AlarmIdentificationProperty AlarmIdentification { get; set; } | public AlarmIdentificationProperty AlarmIdentification { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x65 value = new JT808_0x0200_0x65(); | JT808_0x0200_0x65 value = new JT808_0x0200_0x65(); | ||||
@@ -211,7 +222,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount); | writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount); | ||||
writer.WriteNumber($"[{value.AlarmIdentification.Retain.ReadNumber()}]预留", value.AlarmIdentification.Retain); | writer.WriteNumber($"[{value.AlarmIdentification.Retain.ReadNumber()}]预留", value.AlarmIdentification.Retain); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0200_0x65 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0200_0x65 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x65 value = new JT808_0x0200_0x65(); | JT808_0x0200_0x65 value = new JT808_0x0200_0x65(); | ||||
@@ -239,7 +255,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
}; | }; | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x65 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x65 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte(value.AttachInfoId); | writer.WriteByte(value.AttachInfoId); | ||||
@@ -15,7 +15,13 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0200_0x66 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x66>, IJT808Analyze | public class JT808_0x0200_0x66 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x66>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 胎压监测系统报警信息Id | |||||
/// </summary> | |||||
public override byte AttachInfoId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0200_0x66; | public override byte AttachInfoId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0200_0x66; | ||||
/// <summary> | |||||
/// 胎压监测系统报警信息长度 | |||||
/// </summary> | |||||
public override byte AttachInfoLength { get; set; } | public override byte AttachInfoLength { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 报警ID | /// 报警ID | ||||
@@ -63,7 +69,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// 报警/事件信息列表 | /// 报警/事件信息列表 | ||||
/// </summary> | /// </summary> | ||||
public List<AlarmOrEventProperty> AlarmOrEvents { get; set; } | public List<AlarmOrEventProperty> AlarmOrEvents { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x66 value = new JT808_0x0200_0x66(); | JT808_0x0200_0x66 value = new JT808_0x0200_0x66(); | ||||
@@ -212,7 +223,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
writer.WriteEndArray(); | writer.WriteEndArray(); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0200_0x66 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0200_0x66 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x66 value = new JT808_0x0200_0x66(); | JT808_0x0200_0x66 value = new JT808_0x0200_0x66(); | ||||
@@ -251,7 +267,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
} | } | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x66 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x66 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte(value.AttachInfoId); | writer.WriteByte(value.AttachInfoId); | ||||
@@ -15,7 +15,13 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0200_0x67 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x67>, IJT808Analyze | public class JT808_0x0200_0x67 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x67>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 盲区监测系统报警信息Id | |||||
/// </summary> | |||||
public override byte AttachInfoId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0200_0x67; | public override byte AttachInfoId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0200_0x67; | ||||
/// <summary> | |||||
/// 盲区监测系统报警信息长度 | |||||
/// </summary> | |||||
public override byte AttachInfoLength { get; set; } = 26; | public override byte AttachInfoLength { get; set; } = 26; | ||||
/// <summary> | /// <summary> | ||||
/// 报警ID | /// 报警ID | ||||
@@ -63,7 +69,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// 报警标识号 | /// 报警标识号 | ||||
/// </summary> | /// </summary> | ||||
public AlarmIdentificationProperty AlarmIdentification { get; set; } | public AlarmIdentificationProperty AlarmIdentification { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x67 value = new JT808_0x0200_0x67(); | JT808_0x0200_0x67 value = new JT808_0x0200_0x67(); | ||||
@@ -203,7 +214,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount); | writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount); | ||||
writer.WriteNumber($"[{value.AlarmIdentification.Retain.ReadNumber()}]预留", value.AlarmIdentification.Retain); | writer.WriteNumber($"[{value.AlarmIdentification.Retain.ReadNumber()}]预留", value.AlarmIdentification.Retain); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0200_0x67 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0200_0x67 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x67 value = new JT808_0x0200_0x67(); | JT808_0x0200_0x67 value = new JT808_0x0200_0x67(); | ||||
@@ -229,7 +245,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
}; | }; | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x67 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x67 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte(value.AttachInfoId); | writer.WriteByte(value.AttachInfoId); | ||||
@@ -11,16 +11,29 @@ using System.Text.Json; | |||||
namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | ||||
{ | { | ||||
/// <summary> | |||||
/// 透传数据 | |||||
/// </summary> | |||||
public class JT808_0x0900_0xF7 : JT808_0x0900_BodyBase, IJT808MessagePackFormatter<JT808_0x0900_0xF7>, IJT808Analyze | public class JT808_0x0900_0xF7 : JT808_0x0900_BodyBase, IJT808MessagePackFormatter<JT808_0x0900_0xF7>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 透传类型 | |||||
/// </summary> | |||||
public override byte PassthroughType { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0900_0xF7; | public override byte PassthroughType { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0900_0xF7; | ||||
/// <summary> | /// <summary> | ||||
/// 消息列表总数 | /// 消息列表总数 | ||||
/// </summary> | /// </summary> | ||||
public byte USBMessageCount { get; set; } | public byte USBMessageCount { get; set; } | ||||
/// <summary> | |||||
/// 消息列表数据 | |||||
/// </summary> | |||||
public List<JT808_0x0900_0xF7_USB> USBMessages { get; set; } | public List<JT808_0x0900_0xF7_USB> USBMessages { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0900_0xF7 value = new JT808_0x0900_0xF7(); | JT808_0x0900_0xF7 value = new JT808_0x0900_0xF7(); | ||||
@@ -60,7 +73,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
writer.WriteEndArray(); | writer.WriteEndArray(); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0900_0xF7 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0900_0xF7 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0900_0xF7 value = new JT808_0x0900_0xF7(); | JT808_0x0900_0xF7 value = new JT808_0x0900_0xF7(); | ||||
@@ -80,7 +98,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
} | } | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0900_0xF7 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0900_0xF7 value, IJT808Config config) | ||||
{ | { | ||||
if (value.USBMessages != null && value.USBMessages.Count > 0) | if (value.USBMessages != null && value.USBMessages.Count > 0) | ||||
@@ -10,15 +10,29 @@ using System.Text.Json; | |||||
namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | ||||
{ | { | ||||
/// <summary> | |||||
/// 透传数据 | |||||
/// </summary> | |||||
public class JT808_0x0900_0xF8 : JT808_0x0900_BodyBase, IJT808MessagePackFormatter<JT808_0x0900_0xF8>, IJT808Analyze | public class JT808_0x0900_0xF8 : JT808_0x0900_BodyBase, IJT808MessagePackFormatter<JT808_0x0900_0xF8>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 透传类型 | |||||
/// </summary> | |||||
public override byte PassthroughType { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0900_0xF8; | public override byte PassthroughType { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0900_0xF8; | ||||
/// <summary> | /// <summary> | ||||
/// 消息列表总数 | /// 消息列表总数 | ||||
/// </summary> | /// </summary> | ||||
public byte USBMessageCount { get; set; } | public byte USBMessageCount { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public List<JT808_0x0900_0xF8_USB> USBMessages { get; set; } | public List<JT808_0x0900_0xF8_USB> USBMessages { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0900_0xF8 value = new JT808_0x0900_0xF8(); | JT808_0x0900_0xF8 value = new JT808_0x0900_0xF8(); | ||||
@@ -78,7 +92,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
writer.WriteEndArray(); | writer.WriteEndArray(); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0900_0xF8 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0900_0xF8 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0900_0xF8 value = new JT808_0x0900_0xF8(); | JT808_0x0900_0xF8 value = new JT808_0x0900_0xF8(); | ||||
@@ -108,7 +127,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
} | } | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0900_0xF8 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0900_0xF8 value, IJT808Config config) | ||||
{ | { | ||||
if (value.USBMessages != null && value.USBMessages.Count > 0) | if (value.USBMessages != null && value.USBMessages.Count > 0) | ||||
@@ -42,11 +42,20 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// 附件信息列表 | /// 附件信息列表 | ||||
/// </summary> | /// </summary> | ||||
public List<AttachProperty> AttachInfos { get; set; } | public List<AttachProperty> AttachInfos { get; set; } | ||||
/// <summary> | |||||
/// 报警附件信息消息Id | |||||
/// </summary> | |||||
public override ushort MsgId => 0x1210; | public override ushort MsgId => 0x1210; | ||||
/// <summary> | |||||
/// 报警附件信息消息 | |||||
/// </summary> | |||||
public override string Description => "报警附件信息消息"; | public override string Description => "报警附件信息消息"; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x1210 value = new JT808_0x1210(); | JT808_0x1210 value = new JT808_0x1210(); | ||||
@@ -91,7 +100,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
writer.WriteEndArray(); | writer.WriteEndArray(); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x1210 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x1210 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x1210 value = new JT808_0x1210(); | JT808_0x1210 value = new JT808_0x1210(); | ||||
@@ -121,10 +135,15 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
} | } | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x1210 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x1210 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteString(value.MakerID.PadRight(7, '0')); | |||||
writer.WriteString(value.MakerID.PadRight(7, '\0')); | |||||
if (value.AlarmIdentification == null) | if (value.AlarmIdentification == null) | ||||
{ | { | ||||
throw new NullReferenceException($"{nameof(AlarmIdentificationProperty)}不为空"); | throw new NullReferenceException($"{nameof(AlarmIdentificationProperty)}不为空"); | ||||
@@ -10,6 +10,9 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x1211 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x1211>, IJT808Analyze | public class JT808_0x1211 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x1211>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 文件信息上传 | |||||
/// </summary> | |||||
public override string Description => "文件信息上传"; | public override string Description => "文件信息上传"; | ||||
/// <summary> | /// <summary> | ||||
/// 文件名称长度 | /// 文件名称长度 | ||||
@@ -17,7 +20,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
public byte FileNameLength { get; set; } | public byte FileNameLength { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 文件名称 | /// 文件名称 | ||||
/// <文件类型>_<通道号>_<报警类型>_<序号>_<报警编号>.<后缀名> | |||||
/// 形如:文件类型_通道号_报警类型_序号_报警编号.后缀名 | |||||
/// </summary> | /// </summary> | ||||
public string FileName { get; set; } | public string FileName { get; set; } | ||||
/// <summary> | /// <summary> | ||||
@@ -28,9 +31,16 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// 文件大小 | /// 文件大小 | ||||
/// </summary> | /// </summary> | ||||
public uint FileSize { get; set; } | public uint FileSize { get; set; } | ||||
/// <summary> | |||||
/// 文件信息上传Id | |||||
/// </summary> | |||||
public override ushort MsgId => 0x1211; | public override ushort MsgId => 0x1211; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x1211 value = new JT808_0x1211(); | JT808_0x1211 value = new JT808_0x1211(); | ||||
@@ -44,7 +54,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
value.FileSize = reader.ReadUInt32(); | value.FileSize = reader.ReadUInt32(); | ||||
writer.WriteNumber($"[{value.FileSize.ReadNumber()}]文件大小", value.FileSize); | writer.WriteNumber($"[{value.FileSize.ReadNumber()}]文件大小", value.FileSize); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x1211 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x1211 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x1211 value = new JT808_0x1211(); | JT808_0x1211 value = new JT808_0x1211(); | ||||
@@ -54,7 +69,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
value.FileSize = reader.ReadUInt32(); | value.FileSize = reader.ReadUInt32(); | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x1211 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x1211 value, IJT808Config config) | ||||
{ | { | ||||
writer.Skip(1, out int FileNameLengthPosition); | writer.Skip(1, out int FileNameLengthPosition); | ||||
@@ -10,6 +10,9 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x1212 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x1212>, IJT808Analyze | public class JT808_0x1212 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x1212>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 文件上传完成消息 | |||||
/// </summary> | |||||
public override string Description => "文件上传完成消息"; | public override string Description => "文件上传完成消息"; | ||||
/// <summary> | /// <summary> | ||||
/// 文件名称长度 | /// 文件名称长度 | ||||
@@ -17,7 +20,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
public byte FileNameLength { get; set; } | public byte FileNameLength { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 文件名称 | /// 文件名称 | ||||
/// <文件类型>_<通道号>_<报警类型>_<序号>_<报警编号>.<后缀名> | |||||
/// 形如:文件类型_通道号_报警类型_序号_报警编号.后缀名 | |||||
/// </summary> | /// </summary> | ||||
public string FileName { get; set; } | public string FileName { get; set; } | ||||
/// <summary> | /// <summary> | ||||
@@ -28,8 +31,16 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// 文件大小 | /// 文件大小 | ||||
/// </summary> | /// </summary> | ||||
public uint FileSize { get; set; } | public uint FileSize { get; set; } | ||||
/// <summary> | |||||
/// 文件上传完成消息 | |||||
/// </summary> | |||||
public override ushort MsgId => 0x1212; | public override ushort MsgId => 0x1212; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x1212 value = new JT808_0x1212(); | JT808_0x1212 value = new JT808_0x1212(); | ||||
@@ -43,7 +54,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
value.FileSize = reader.ReadUInt32(); | value.FileSize = reader.ReadUInt32(); | ||||
writer.WriteNumber($"[{value.FileSize.ReadNumber()}]文件大小", value.FileSize); | writer.WriteNumber($"[{value.FileSize.ReadNumber()}]文件大小", value.FileSize); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x1212 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x1212 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x1212 value = new JT808_0x1212(); | JT808_0x1212 value = new JT808_0x1212(); | ||||
@@ -53,7 +69,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
value.FileSize = reader.ReadUInt32(); | value.FileSize = reader.ReadUInt32(); | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x1212 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x1212 value, IJT808Config config) | ||||
{ | { | ||||
writer.Skip(1, out int FileNameLengthPosition); | writer.Skip(1, out int FileNameLengthPosition); | ||||
@@ -13,7 +13,13 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8103_0xF364 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0xF364>, IJT808Analyze | public class JT808_0x8103_0xF364 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0xF364>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 高级驾驶辅助系统参数 | |||||
/// </summary> | |||||
public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF364; | public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF364; | ||||
/// <summary> | |||||
/// 高级驾驶辅助系统参数长度 | |||||
/// </summary> | |||||
public override byte ParamLength { get; set; } | public override byte ParamLength { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 报警判断速度阈值 | /// 报警判断速度阈值 | ||||
@@ -198,7 +204,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// 保留字段 | /// 保留字段 | ||||
/// </summary> | /// </summary> | ||||
public byte[] Placeholder2 { get; set; } = new byte[4]; | public byte[] Placeholder2 { get; set; } = new byte[4]; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8103_0xF364 value = new JT808_0x8103_0xF364(); | JT808_0x8103_0xF364 value = new JT808_0x8103_0xF364(); | ||||
@@ -326,7 +337,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
value.Placeholder2 = reader.ReadArray(4).ToArray(); | value.Placeholder2 = reader.ReadArray(4).ToArray(); | ||||
writer.WriteString("保留字段", value.Placeholder2.ToHexString()); | writer.WriteString("保留字段", value.Placeholder2.ToHexString()); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8103_0xF364 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8103_0xF364 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8103_0xF364 value = new JT808_0x8103_0xF364(); | JT808_0x8103_0xF364 value = new JT808_0x8103_0xF364(); | ||||
@@ -379,7 +395,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
value.Placeholder2 = reader.ReadArray(4).ToArray(); | value.Placeholder2 = reader.ReadArray(4).ToArray(); | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF364 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF364 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteUInt32(value.ParamId); | writer.WriteUInt32(value.ParamId); | ||||
@@ -13,7 +13,13 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8103_0xF365 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0xF365>, IJT808Analyze | public class JT808_0x8103_0xF365 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0xF365>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 驾驶员状态监测系统参数 | |||||
/// </summary> | |||||
public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF365; | public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF365; | ||||
/// <summary> | |||||
/// 驾驶员状态监测系统参数长度 | |||||
/// </summary> | |||||
public override byte ParamLength { get; set; } | public override byte ParamLength { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 报警判断速度阈值 | /// 报警判断速度阈值 | ||||
@@ -151,7 +157,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// 保留字段 | /// 保留字段 | ||||
/// </summary> | /// </summary> | ||||
public byte[] Retain { get; set; } = new byte[2]; | public byte[] Retain { get; set; } = new byte[2]; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8103_0xF365 value = new JT808_0x8103_0xF365(); | JT808_0x8103_0xF365 value = new JT808_0x8103_0xF365(); | ||||
@@ -257,7 +268,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray(); | value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray(); | ||||
writer.WriteString("保留字段", value.Retain.ToHexString()); | writer.WriteString("保留字段", value.Retain.ToHexString()); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8103_0xF365 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8103_0xF365 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8103_0xF365 value = new JT808_0x8103_0xF365(); | JT808_0x8103_0xF365 value = new JT808_0x8103_0xF365(); | ||||
@@ -299,7 +315,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray(); | value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray(); | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF365 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF365 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteUInt32(value.ParamId); | writer.WriteUInt32(value.ParamId); | ||||
@@ -11,7 +11,13 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8103_0xF366 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0xF366>, IJT808Analyze | public class JT808_0x8103_0xF366 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0xF366>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 胎压监测系统参数Id | |||||
/// </summary> | |||||
public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF366; | public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF366; | ||||
/// <summary> | |||||
/// 胎压监测系统参数长度 | |||||
/// </summary> | |||||
public override byte ParamLength { get; set; } = 46; | public override byte ParamLength { get; set; } = 46; | ||||
/// <summary> | /// <summary> | ||||
/// 轮胎规格型号 12位 | /// 轮胎规格型号 12位 | ||||
@@ -57,7 +63,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// 保留项 | /// 保留项 | ||||
/// </summary> | /// </summary> | ||||
public byte[] Retain { get; set; } = new byte[6]; | public byte[] Retain { get; set; } = new byte[6]; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8103_0xF366 value = new JT808_0x8103_0xF366(); | JT808_0x8103_0xF366 value = new JT808_0x8103_0xF366(); | ||||
@@ -89,7 +100,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray(); | value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray(); | ||||
writer.WriteString("保留项", value.Retain.ToHexString()); | writer.WriteString("保留项", value.Retain.ToHexString()); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8103_0xF366 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8103_0xF366 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8103_0xF366 value = new JT808_0x8103_0xF366(); | JT808_0x8103_0xF366 value = new JT808_0x8103_0xF366(); | ||||
@@ -108,7 +124,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray(); | value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray(); | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF366 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF366 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteUInt32(value.ParamId); | writer.WriteUInt32(value.ParamId); | ||||
@@ -11,7 +11,13 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8103_0xF367 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0xF367>, IJT808Analyze | public class JT808_0x8103_0xF367 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0xF367>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 盲区监测系统参数Id | |||||
/// </summary> | |||||
public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF367; | public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF367; | ||||
/// <summary> | |||||
/// 盲区监测系统参数长度 | |||||
/// </summary> | |||||
public override byte ParamLength { get; set; } = 2; | public override byte ParamLength { get; set; } = 2; | ||||
/// <summary> | /// <summary> | ||||
/// 后方接近报警时间阈值 | /// 后方接近报警时间阈值 | ||||
@@ -21,7 +27,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// 侧后方接近报警时间阈值 | /// 侧后方接近报警时间阈值 | ||||
/// </summary> | /// </summary> | ||||
public byte LateralRearApproachAlarmTimeThreshold { get; set; } | public byte LateralRearApproachAlarmTimeThreshold { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8103_0xF367 value = new JT808_0x8103_0xF367(); | JT808_0x8103_0xF367 value = new JT808_0x8103_0xF367(); | ||||
@@ -34,7 +45,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
value.LateralRearApproachAlarmTimeThreshold = reader.ReadByte(); | value.LateralRearApproachAlarmTimeThreshold = reader.ReadByte(); | ||||
writer.WriteNumber($"[{value.LateralRearApproachAlarmTimeThreshold.ReadNumber()}]侧后方接近报警时间阈值", value.LateralRearApproachAlarmTimeThreshold); | writer.WriteNumber($"[{value.LateralRearApproachAlarmTimeThreshold.ReadNumber()}]侧后方接近报警时间阈值", value.LateralRearApproachAlarmTimeThreshold); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8103_0xF367 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8103_0xF367 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8103_0xF367 value = new JT808_0x8103_0xF367(); | JT808_0x8103_0xF367 value = new JT808_0x8103_0xF367(); | ||||
@@ -44,7 +60,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
value.LateralRearApproachAlarmTimeThreshold = reader.ReadByte(); | value.LateralRearApproachAlarmTimeThreshold = reader.ReadByte(); | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF367 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF367 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteUInt32(value.ParamId); | writer.WriteUInt32(value.ParamId); | ||||
@@ -12,6 +12,9 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8900_0xF7 : JT808_0x8900_BodyBase, IJT808MessagePackFormatter<JT808_0x8900_0xF7>, IJT808Analyze | public class JT808_0x8900_0xF7 : JT808_0x8900_BodyBase, IJT808MessagePackFormatter<JT808_0x8900_0xF7>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 查询基本信息类型 | |||||
/// </summary> | |||||
public override byte PassthroughType { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0900_0xF7; | public override byte PassthroughType { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0900_0xF7; | ||||
/// <summary> | /// <summary> | ||||
/// 外设ID列表总数 | /// 外设ID列表总数 | ||||
@@ -21,7 +24,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// 外设ID | /// 外设ID | ||||
/// </summary> | /// </summary> | ||||
public List<byte> MultipleUSB { get; set; } | public List<byte> MultipleUSB { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8900_0xF7 value = new JT808_0x8900_0xF7(); | JT808_0x8900_0xF7 value = new JT808_0x8900_0xF7(); | ||||
@@ -40,7 +48,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
writer.WriteEndArray(); | writer.WriteEndArray(); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8900_0xF7 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8900_0xF7 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8900_0xF7 value = new JT808_0x8900_0xF7(); | JT808_0x8900_0xF7 value = new JT808_0x8900_0xF7(); | ||||
@@ -55,7 +68,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
} | } | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8900_0xF7 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8900_0xF7 value, IJT808Config config) | ||||
{ | { | ||||
if (value.MultipleUSB != null && value.MultipleUSB.Count > 0) | if (value.MultipleUSB != null && value.MultipleUSB.Count > 0) | ||||
@@ -12,6 +12,9 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8900_0xF8 : JT808_0x8900_BodyBase, IJT808MessagePackFormatter<JT808_0x8900_0xF8>, IJT808Analyze | public class JT808_0x8900_0xF8 : JT808_0x8900_BodyBase, IJT808MessagePackFormatter<JT808_0x8900_0xF8>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 查询基本信息透传类型 | |||||
/// </summary> | |||||
public override byte PassthroughType { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0900_0xF8; | public override byte PassthroughType { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0900_0xF8; | ||||
/// <summary> | /// <summary> | ||||
/// 外设ID列表总数 | /// 外设ID列表总数 | ||||
@@ -21,7 +24,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// 外设ID | /// 外设ID | ||||
/// </summary> | /// </summary> | ||||
public List<byte> MultipleUSB { get; set; } | public List<byte> MultipleUSB { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8900_0xF8 value = new JT808_0x8900_0xF8(); | JT808_0x8900_0xF8 value = new JT808_0x8900_0xF8(); | ||||
@@ -40,7 +48,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
writer.WriteEndArray(); | writer.WriteEndArray(); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8900_0xF8 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8900_0xF8 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8900_0xF8 value = new JT808_0x8900_0xF8(); | JT808_0x8900_0xF8 value = new JT808_0x8900_0xF8(); | ||||
@@ -55,7 +68,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
} | } | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8900_0xF8 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8900_0xF8 value, IJT808Config config) | ||||
{ | { | ||||
if (value.MultipleUSB != null && value.MultipleUSB.Count > 0) | if (value.MultipleUSB != null && value.MultipleUSB.Count > 0) | ||||
@@ -12,10 +12,25 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x9208: JT808Bodies, IJT808MessagePackFormatter<JT808_0x9208>, IJT808Analyze | public class JT808_0x9208: JT808Bodies, IJT808MessagePackFormatter<JT808_0x9208>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// Description | |||||
/// </summary> | |||||
public override string Description => "报警附件上传指令"; | public override string Description => "报警附件上传指令"; | ||||
/// <summary> | |||||
/// 服务IP地址长度 | |||||
/// </summary> | |||||
public byte AttachmentServerIPLength { get; set; } | public byte AttachmentServerIPLength { get; set; } | ||||
/// <summary> | |||||
/// 服务IP地址 | |||||
/// </summary> | |||||
public string AttachmentServerIP { get; set; } | public string AttachmentServerIP { get; set; } | ||||
/// <summary> | |||||
/// TCP端口 | |||||
/// </summary> | |||||
public ushort AttachmentServerIPTcpPort { get; set; } | public ushort AttachmentServerIPTcpPort { get; set; } | ||||
/// <summary> | |||||
/// UDP端口 | |||||
/// </summary> | |||||
public ushort AttachmentServerIPUdpPort { get; set; } | public ushort AttachmentServerIPUdpPort { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 报警标识号 | /// 报警标识号 | ||||
@@ -30,9 +45,16 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// 预留 | /// 预留 | ||||
/// </summary> | /// </summary> | ||||
public byte[] Retain { get; set; } = new byte[16]; | public byte[] Retain { get; set; } = new byte[16]; | ||||
/// <summary> | |||||
/// 报警附件上传指令Id | |||||
/// </summary> | |||||
public override ushort MsgId => 0x9208; | public override ushort MsgId => 0x9208; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x9208 value = new JT808_0x9208(); | JT808_0x9208 value = new JT808_0x9208(); | ||||
@@ -63,7 +85,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
string retainHex = reader.ReadVirtualArray(16).ToArray().ToHexString(); | string retainHex = reader.ReadVirtualArray(16).ToArray().ToHexString(); | ||||
writer.WriteString($"预留", retainHex); | writer.WriteString($"预留", retainHex); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x9208 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x9208 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x9208 value = new JT808_0x9208(); | JT808_0x9208 value = new JT808_0x9208(); | ||||
@@ -83,7 +110,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
value.Retain = reader.ReadArray(16).ToArray(); | value.Retain = reader.ReadArray(16).ToArray(); | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9208 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9208 value, IJT808Config config) | ||||
{ | { | ||||
writer.Skip(1, out int AttachmentServerIPLengthPosition); | writer.Skip(1, out int AttachmentServerIPLengthPosition); | ||||
@@ -12,6 +12,9 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x9212: JT808Bodies, IJT808MessagePackFormatter<JT808_0x9212>, IJT808Analyze | public class JT808_0x9212: JT808Bodies, IJT808MessagePackFormatter<JT808_0x9212>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 文件上传完成消息应答 | |||||
/// </summary> | |||||
public override string Description => "文件上传完成消息应答"; | public override string Description => "文件上传完成消息应答"; | ||||
/// <summary> | /// <summary> | ||||
/// 文件名称长度 | /// 文件名称长度 | ||||
@@ -38,9 +41,16 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// 补传数据包列表 | /// 补传数据包列表 | ||||
/// </summary> | /// </summary> | ||||
public List<DataPackageProperty> DataPackages { get; set; } | public List<DataPackageProperty> DataPackages { get; set; } | ||||
/// <summary> | |||||
/// 文件上传完成消息应答Id | |||||
/// </summary> | |||||
public override ushort MsgId => 0x9212; | public override ushort MsgId => 0x9212; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x9212 value = new JT808_0x9212(); | JT808_0x9212 value = new JT808_0x9212(); | ||||
@@ -71,7 +81,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
writer.WriteEndArray(); | writer.WriteEndArray(); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x9212 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x9212 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x9212 value = new JT808_0x9212(); | JT808_0x9212 value = new JT808_0x9212(); | ||||
@@ -93,7 +108,12 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
} | } | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9212 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9212 value, IJT808Config config) | ||||
{ | { | ||||
writer.Skip(1, out int FileNameLengthPosition); | writer.Skip(1, out int FileNameLengthPosition); | ||||
@@ -15,7 +15,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Metadata | |||||
public byte FileNameLength { get; set; } | public byte FileNameLength { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 文件名称 | /// 文件名称 | ||||
/// <文件类型>_<通道号>_<报警类型>_<序号>_<报警编号>.<后缀名> | |||||
/// 形如:文件类型_通道号_报警类型_序号_报警编号.后缀名 | |||||
/// </summary> | /// </summary> | ||||
public string FileName{ get; set; } | public string FileName{ get; set; } | ||||
/// <summary> | /// <summary> | ||||
@@ -4,6 +4,9 @@ using System.Text; | |||||
namespace JT808.Protocol.Extensions.JTActiveSafety.Metadata | namespace JT808.Protocol.Extensions.JTActiveSafety.Metadata | ||||
{ | { | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public class JT808_0x0900_0xF7_USB | public class JT808_0x0900_0xF7_USB | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
@@ -4,6 +4,9 @@ using System.Text; | |||||
namespace JT808.Protocol.Extensions.JTActiveSafety.Metadata | namespace JT808.Protocol.Extensions.JTActiveSafety.Metadata | ||||
{ | { | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public class JT808_0x0900_0xF8_USB | public class JT808_0x0900_0xF8_USB | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
@@ -3,19 +3,37 @@ | |||||
namespace JTActiveSafety.Protocol.Buffers | namespace JTActiveSafety.Protocol.Buffers | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// <see cref="System.Buffers.Writer"/> | |||||
/// 内存写入器 | |||||
/// ref:System.Buffers.Writer | |||||
/// </summary> | /// </summary> | ||||
ref partial struct JTActiveSafetyBufferWriter | ref partial struct JTActiveSafetyBufferWriter | ||||
{ | { | ||||
private Span<byte> _buffer; | private Span<byte> _buffer; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="buffer"></param> | |||||
public JTActiveSafetyBufferWriter(Span<byte> buffer) | public JTActiveSafetyBufferWriter(Span<byte> buffer) | ||||
{ | { | ||||
_buffer = buffer; | _buffer = buffer; | ||||
WrittenCount = 0; | WrittenCount = 0; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public Span<byte> Free => _buffer.Slice(WrittenCount); | public Span<byte> Free => _buffer.Slice(WrittenCount); | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public Span<byte> Written => _buffer.Slice(0, WrittenCount); | public Span<byte> Written => _buffer.Slice(0, WrittenCount); | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public int WrittenCount { get; private set; } | public int WrittenCount { get; private set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="count"></param> | |||||
public void Advance(int count) | public void Advance(int count) | ||||
{ | { | ||||
WrittenCount += count; | WrittenCount += count; | ||||
@@ -9,6 +9,12 @@ namespace JTActiveSafety.Protocol.Extensions | |||||
/// </summary> | /// </summary> | ||||
public static partial class HexExtensions | public static partial class HexExtensions | ||||
{ | { | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="source"></param> | |||||
/// <param name="separator"></param> | |||||
/// <returns></returns> | |||||
public static string ToHexString(this byte[] source, string separator = " ") | public static string ToHexString(this byte[] source, string separator = " ") | ||||
{ | { | ||||
var value = source.Select(s => s.ToString("X2")); | var value = source.Select(s => s.ToString("X2")); | ||||
@@ -35,51 +41,117 @@ namespace JTActiveSafety.Protocol.Extensions | |||||
} | } | ||||
return buf; | return buf; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="value"></param> | |||||
/// <param name="format"></param> | |||||
/// <returns></returns> | |||||
public static string ReadNumber(this byte value, string format = "X2") | public static string ReadNumber(this byte value, string format = "X2") | ||||
{ | { | ||||
return value.ToString(format); | return value.ToString(format); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="value"></param> | |||||
/// <param name="format"></param> | |||||
/// <returns></returns> | |||||
public static string ReadNumber(this int value, string format = "X8") | public static string ReadNumber(this int value, string format = "X8") | ||||
{ | { | ||||
return value.ToString(format); | return value.ToString(format); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="value"></param> | |||||
/// <param name="format"></param> | |||||
/// <returns></returns> | |||||
public static string ReadNumber(this uint value, string format = "X8") | public static string ReadNumber(this uint value, string format = "X8") | ||||
{ | { | ||||
return value.ToString(format); | return value.ToString(format); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="value"></param> | |||||
/// <param name="format"></param> | |||||
/// <returns></returns> | |||||
public static string ReadNumber(this long value, string format = "X16") | public static string ReadNumber(this long value, string format = "X16") | ||||
{ | { | ||||
return value.ToString(format); | return value.ToString(format); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="value"></param> | |||||
/// <param name="format"></param> | |||||
/// <returns></returns> | |||||
public static string ReadNumber(this ulong value, string format = "X16") | public static string ReadNumber(this ulong value, string format = "X16") | ||||
{ | { | ||||
return value.ToString(format); | return value.ToString(format); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="value"></param> | |||||
/// <param name="format"></param> | |||||
/// <returns></returns> | |||||
public static string ReadNumber(this short value, string format = "X4") | public static string ReadNumber(this short value, string format = "X4") | ||||
{ | { | ||||
return value.ToString(format); | return value.ToString(format); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="value"></param> | |||||
/// <param name="format"></param> | |||||
/// <returns></returns> | |||||
public static string ReadNumber(this ushort value, string format = "X4") | public static string ReadNumber(this ushort value, string format = "X4") | ||||
{ | { | ||||
return value.ToString(format); | return value.ToString(format); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="value"></param> | |||||
/// <returns></returns> | |||||
public static ReadOnlySpan<char> ReadBinary(this ushort value) | public static ReadOnlySpan<char> ReadBinary(this ushort value) | ||||
{ | { | ||||
return System.Convert.ToString(value, 2).PadLeft(16, '0').AsSpan(); | return System.Convert.ToString(value, 2).PadLeft(16, '0').AsSpan(); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="value"></param> | |||||
/// <returns></returns> | |||||
public static ReadOnlySpan<char> ReadBinary(this short value) | public static ReadOnlySpan<char> ReadBinary(this short value) | ||||
{ | { | ||||
return System.Convert.ToString(value, 2).PadLeft(16, '0').AsSpan(); | return System.Convert.ToString(value, 2).PadLeft(16, '0').AsSpan(); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="value"></param> | |||||
/// <returns></returns> | |||||
public static ReadOnlySpan<char> ReadBinary(this uint value) | public static ReadOnlySpan<char> ReadBinary(this uint value) | ||||
{ | { | ||||
return System.Convert.ToString(value, 2).PadLeft(32, '0').AsSpan(); | return System.Convert.ToString(value, 2).PadLeft(32, '0').AsSpan(); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="value"></param> | |||||
/// <returns></returns> | |||||
public static ReadOnlySpan<char> ReadBinary(this int value) | public static ReadOnlySpan<char> ReadBinary(this int value) | ||||
{ | { | ||||
return System.Convert.ToString(value, 2).PadLeft(32, '0').AsSpan(); | return System.Convert.ToString(value, 2).PadLeft(32, '0').AsSpan(); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="value"></param> | |||||
/// <returns></returns> | |||||
public static ReadOnlySpan<char> ReadBinary(this byte value) | public static ReadOnlySpan<char> ReadBinary(this byte value) | ||||
{ | { | ||||
return System.Convert.ToString(value, 2).PadLeft(8, '0').AsSpan(); | return System.Convert.ToString(value, 2).PadLeft(8, '0').AsSpan(); | ||||
@@ -6,15 +6,51 @@ | |||||
<members> | <members> | ||||
<member name="T:JTActiveSafety.Protocol.Buffers.JTActiveSafetyBufferWriter"> | <member name="T:JTActiveSafety.Protocol.Buffers.JTActiveSafetyBufferWriter"> | ||||
<summary> | <summary> | ||||
<see cref="!:System.Buffers.Writer"/> | |||||
内存写入器 | |||||
ref:System.Buffers.Writer | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JTActiveSafety.Protocol.Buffers.JTActiveSafetyBufferWriter.#ctor(System.Span{System.Byte})"> | |||||
<summary> | |||||
</summary> | |||||
<param name="buffer"></param> | |||||
</member> | |||||
<member name="P:JTActiveSafety.Protocol.Buffers.JTActiveSafetyBufferWriter.Free"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JTActiveSafety.Protocol.Buffers.JTActiveSafetyBufferWriter.Written"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JTActiveSafety.Protocol.Buffers.JTActiveSafetyBufferWriter.WrittenCount"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="M:JTActiveSafety.Protocol.Buffers.JTActiveSafetyBufferWriter.Advance(System.Int32)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="count"></param> | |||||
</member> | |||||
<member name="T:JTActiveSafety.Protocol.Extensions.HexExtensions"> | <member name="T:JTActiveSafety.Protocol.Extensions.HexExtensions"> | ||||
<summary> | <summary> | ||||
ref:"www.codeproject.com/tips/447938/high-performance-csharp-byte-array-to-hex-string-t" | ref:"www.codeproject.com/tips/447938/high-performance-csharp-byte-array-to-hex-string-t" | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JTActiveSafety.Protocol.Extensions.HexExtensions.ToHexString(System.Byte[],System.String)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="source"></param> | |||||
<param name="separator"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="M:JTActiveSafety.Protocol.Extensions.HexExtensions.ToHexBytes(System.String,System.String)"> | <member name="M:JTActiveSafety.Protocol.Extensions.HexExtensions.ToHexBytes(System.String,System.String)"> | ||||
<summary> | <summary> | ||||
16进制字符串转16进制数组 | 16进制字符串转16进制数组 | ||||
@@ -23,6 +59,97 @@ | |||||
<param name="separator"></param> | <param name="separator"></param> | ||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JTActiveSafety.Protocol.Extensions.HexExtensions.ReadNumber(System.Byte,System.String)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="value"></param> | |||||
<param name="format"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="M:JTActiveSafety.Protocol.Extensions.HexExtensions.ReadNumber(System.Int32,System.String)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="value"></param> | |||||
<param name="format"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="M:JTActiveSafety.Protocol.Extensions.HexExtensions.ReadNumber(System.UInt32,System.String)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="value"></param> | |||||
<param name="format"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="M:JTActiveSafety.Protocol.Extensions.HexExtensions.ReadNumber(System.Int64,System.String)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="value"></param> | |||||
<param name="format"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="M:JTActiveSafety.Protocol.Extensions.HexExtensions.ReadNumber(System.UInt64,System.String)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="value"></param> | |||||
<param name="format"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="M:JTActiveSafety.Protocol.Extensions.HexExtensions.ReadNumber(System.Int16,System.String)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="value"></param> | |||||
<param name="format"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="M:JTActiveSafety.Protocol.Extensions.HexExtensions.ReadNumber(System.UInt16,System.String)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="value"></param> | |||||
<param name="format"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="M:JTActiveSafety.Protocol.Extensions.HexExtensions.ReadBinary(System.UInt16)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="value"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="M:JTActiveSafety.Protocol.Extensions.HexExtensions.ReadBinary(System.Int16)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="value"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="M:JTActiveSafety.Protocol.Extensions.HexExtensions.ReadBinary(System.UInt32)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="value"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="M:JTActiveSafety.Protocol.Extensions.HexExtensions.ReadBinary(System.Int32)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="value"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="M:JTActiveSafety.Protocol.Extensions.HexExtensions.ReadBinary(System.Byte)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="value"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="F:JTActiveSafety.Protocol.JTActiveSafetyPackage.FH_Bytes"> | <member name="F:JTActiveSafety.Protocol.JTActiveSafetyPackage.FH_Bytes"> | ||||
<summary> | <summary> | ||||
帧头标识 | 帧头标识 | ||||
@@ -60,6 +187,47 @@ | |||||
默认长度64K,文件小于64K 则为实际长度 | 默认长度64K,文件小于64K 则为实际长度 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="T:JTActiveSafety.Protocol.JTActiveSafetySerializer"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="M:JTActiveSafety.Protocol.JTActiveSafetySerializer.Serialize(JTActiveSafety.Protocol.JTActiveSafetyPackage,System.Int32)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="package"></param> | |||||
<param name="minBufferSize"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="M:JTActiveSafety.Protocol.JTActiveSafetySerializer.Deserialize(System.ReadOnlySpan{System.Byte})"> | |||||
<summary> | |||||
</summary> | |||||
<param name="bytes"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="M:JTActiveSafety.Protocol.JTActiveSafetySerializer.AnalyzeJsonBuffer(System.ReadOnlySpan{System.Byte},System.Text.Json.JsonWriterOptions)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="bytes"></param> | |||||
<param name="options"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="M:JTActiveSafety.Protocol.JTActiveSafetySerializer.Analyze(System.ReadOnlySpan{System.Byte},System.Text.Json.JsonWriterOptions)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="bytes"></param> | |||||
<param name="options"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="T:JTActiveSafety.Protocol.MessagePack.JTActiveSafetyMessagePackReader"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="M:JTActiveSafety.Protocol.MessagePack.JTActiveSafetyMessagePackReader.ReadBigNumber(System.Int32)"> | <member name="M:JTActiveSafety.Protocol.MessagePack.JTActiveSafetyMessagePackReader.ReadBigNumber(System.Int32)"> | ||||
<summary> | <summary> | ||||
数字编码 大端模式、高位在前 | 数字编码 大端模式、高位在前 | ||||
@@ -10,8 +10,17 @@ using System.Text.Json; | |||||
namespace JTActiveSafety.Protocol | namespace JTActiveSafety.Protocol | ||||
{ | { | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public static class JTActiveSafetySerializer | public static class JTActiveSafetySerializer | ||||
{ | { | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="package"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
/// <returns></returns> | |||||
public static byte[] Serialize(JTActiveSafetyPackage package, int minBufferSize = 65 * 1024) | public static byte[] Serialize(JTActiveSafetyPackage package, int minBufferSize = 65 * 1024) | ||||
{ | { | ||||
byte[] buffer = JTActiveSafetyArrayPool.Rent(minBufferSize); | byte[] buffer = JTActiveSafetyArrayPool.Rent(minBufferSize); | ||||
@@ -30,7 +39,11 @@ namespace JTActiveSafety.Protocol | |||||
JTActiveSafetyArrayPool.Return(buffer); | JTActiveSafetyArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="bytes"></param> | |||||
/// <returns></returns> | |||||
public static JTActiveSafetyPackage Deserialize(ReadOnlySpan<byte> bytes) | public static JTActiveSafetyPackage Deserialize(ReadOnlySpan<byte> bytes) | ||||
{ | { | ||||
JTActiveSafetyPackage jTActiveSafetyPackage= new JTActiveSafetyPackage(); | JTActiveSafetyPackage jTActiveSafetyPackage= new JTActiveSafetyPackage(); | ||||
@@ -42,7 +55,12 @@ namespace JTActiveSafety.Protocol | |||||
jTActiveSafetyPackage.Bodies = reader.ReadRemainArray().ToArray(); | jTActiveSafetyPackage.Bodies = reader.ReadRemainArray().ToArray(); | ||||
return jTActiveSafetyPackage; | return jTActiveSafetyPackage; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="bytes"></param> | |||||
/// <param name="options"></param> | |||||
/// <returns></returns> | |||||
public static byte[] AnalyzeJsonBuffer(ReadOnlySpan<byte> bytes, JsonWriterOptions options = default) | public static byte[] AnalyzeJsonBuffer(ReadOnlySpan<byte> bytes, JsonWriterOptions options = default) | ||||
{ | { | ||||
JTActiveSafetyMessagePackReader reader = new JTActiveSafetyMessagePackReader(bytes); | JTActiveSafetyMessagePackReader reader = new JTActiveSafetyMessagePackReader(bytes); | ||||
@@ -65,6 +83,12 @@ namespace JTActiveSafety.Protocol | |||||
return memoryStream.ToArray(); | return memoryStream.ToArray(); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="bytes"></param> | |||||
/// <param name="options"></param> | |||||
/// <returns></returns> | |||||
public static string Analyze(ReadOnlySpan<byte> bytes, JsonWriterOptions options = default) | public static string Analyze(ReadOnlySpan<byte> bytes, JsonWriterOptions options = default) | ||||
{ | { | ||||
string json = Encoding.UTF8.GetString(AnalyzeJsonBuffer(bytes, options)); | string json = Encoding.UTF8.GetString(AnalyzeJsonBuffer(bytes, options)); | ||||
@@ -9,6 +9,9 @@ using System.Text; | |||||
namespace JTActiveSafety.Protocol.MessagePack | namespace JTActiveSafety.Protocol.MessagePack | ||||
{ | { | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
ref struct JTActiveSafetyMessagePackReader | ref struct JTActiveSafetyMessagePackReader | ||||
{ | { | ||||
public ReadOnlySpan<byte> Reader { get; private set; } | public ReadOnlySpan<byte> Reader { get; private set; } | ||||