From 0d285a5ee6d7c127151e4e93c6b83281a68e9198 Mon Sep 17 00:00:00 2001 From: joaomfmartins Date: Fri, 22 Oct 2021 18:26:51 +0100 Subject: [PATCH] Write PassthroughData directly instead of using JT808_0x8900/0900_BodyBase implementation. --- src/JT808.Protocol/MessageBody/JT808_0x0900.cs | 12 ++++++++++-- src/JT808.Protocol/MessageBody/JT808_0x8900.cs | 11 ++++++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/JT808.Protocol/MessageBody/JT808_0x0900.cs b/src/JT808.Protocol/MessageBody/JT808_0x0900.cs index 901130c..6aad958 100644 --- a/src/JT808.Protocol/MessageBody/JT808_0x0900.cs +++ b/src/JT808.Protocol/MessageBody/JT808_0x0900.cs @@ -93,8 +93,16 @@ namespace JT808.Protocol.MessageBody public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0900 value, IJT808Config config) { writer.WriteByte(value.PassthroughType); - object obj = config.GetMessagePackFormatterByType(value.JT808_0x0900_BodyBase.GetType()); - JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(obj, ref writer, value.JT808_0x0900_BodyBase, config); + + if ( value.JT808_0x0900_BodyBase != null ) + { + object obj = config.GetMessagePackFormatterByType( value.JT808_0x0900_BodyBase.GetType() ); + JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize( obj, ref writer, value.JT808_0x0900_BodyBase, config ); + } + else + { + writer.WriteArray( value.PassthroughData ); + } } } } diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8900.cs b/src/JT808.Protocol/MessageBody/JT808_0x8900.cs index cf6cf05..bcb70a6 100644 --- a/src/JT808.Protocol/MessageBody/JT808_0x8900.cs +++ b/src/JT808.Protocol/MessageBody/JT808_0x8900.cs @@ -63,7 +63,16 @@ namespace JT808.Protocol.MessageBody public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8900 value, IJT808Config config) { writer.WriteByte(value.PassthroughType); - JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(value.JT808_0X8900_BodyBase, ref writer, value.JT808_0X8900_BodyBase, config); + + if ( value.JT808_0X8900_BodyBase != null ) + { + JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize( value.JT808_0X8900_BodyBase, ref writer, value.JT808_0X8900_BodyBase, config ); + } + else + { + writer.WriteArray( value.PassthroughData ); + } + } /// ///