using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.Emit;
using System.Text;
using System.Text.Json;
using JT808.Protocol.Extensions.GPS51.Metadata;
using JT808.Protocol.Formatters;
using JT808.Protocol.Interfaces;
using JT808.Protocol.MessageBody;
using JT808.Protocol.MessagePack;
namespace JT808.Protocol.Extensions.GPS51.MessageBody
{
///
/// 1+7*N
/// Wifi数据:第1个字节wifi个数,后面为n个wifi数据;WIFI数据:6字节 wifiMac 1字节 信号强度
///
public class JT808_0x0200_0x54 : JT808MessagePackFormatter, JT808_0x0200_CustomBodyBase, IJT808Analyze
{
///
///
///
public byte AttachInfoId { get; set; } = JT808_GPS51_Constants.JT808_0x0200_0x54;
///
///
///
public byte AttachInfoLength { get; set; }
///
/// wifi个数
///
public byte Count { get; set; }
///
/// wifi信息
///
public List WifiInfos { get; set; }
///
///
///
///
///
///
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_0x0200_0x54 value = new JT808_0x0200_0x54();
value.AttachInfoId = reader.ReadByte();
writer.WriteNumber($"[{value.AttachInfoId.ReadNumber()}]附加信息Id", value.AttachInfoId);
value.AttachInfoLength = reader.ReadByte();
writer.WriteNumber($"[{value.AttachInfoLength.ReadNumber()}]附加信息长度", value.AttachInfoLength);
value.Count = reader.ReadByte();
writer.WriteNumber($"[{value.Count.ReadNumber()}]Wifi数量", value.Count);
writer.WriteStartArray();
for (int i = 0; i < value.Count; i++)
{
writer.WriteStartObject();
var wifimac = reader.ReadArray(6).ToArray().ToHexString();
writer.WriteString($"[{wifimac}]WifiMac", wifimac);
var signalstrength = reader.ReadByte();
writer.WriteNumber($"[{signalstrength.ReadNumber()}]信号强度", signalstrength);
writer.WriteEndObject();
}
writer.WriteEndArray();
}
///
///
///
///
///
///
public override JT808_0x0200_0x54 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x0200_0x54 value = new JT808_0x0200_0x54();
value.AttachInfoId = reader.ReadByte();
value.AttachInfoLength = reader.ReadByte();
value.Count = reader.ReadByte();
value.WifiInfos = new List();
for (int i = 0; i < value.Count; i++)
{
value.WifiInfos.Add(new WifiInfo
{
WifiMac = reader.ReadArray(6).ToArray().ToHexString(),
SingnalStrength = reader.ReadByte()
});
}
return value;
}
///
///
///
///
///
///
public override void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x54 value, IJT808Config config)
{
writer.WriteByte(value.AttachInfoId);
writer.Skip(1,out int position);
writer.WriteByte((byte)value.WifiInfos.Count);
foreach (var wifi in value.WifiInfos)
{
writer.WriteArray(wifi.WifiMac.ToHexBytes());
writer.WriteByte(wifi.SingnalStrength);
}
}
}
public class WifiInfo {
///
/// wifimac
///
public string WifiMac { get; set; }
///
/// 信号轻度
///
public byte SingnalStrength { get; set; }
}
}