using Edge.Core.Parser.BinaryParser.Attributes; using System.Collections.Generic; namespace PetroChinaOnlineWatchPlugin.MessageEntity.Incoming { public class IfsfMessageAckIn { [Format(1, EncodingType.BIN, -9890)] public byte DataIdentifier { get; set; } [Format(1, EncodingType.BIN, -9880)] [Range(0, 7, "Data ack must range in 0 to 7")] public byte DataAck { get; set; } public override string ToString() { return $"{DataIdentifier} {DataAck}"; } } public class AckMessageMessageIn : MessageBase { [Format(2, EncodingType.BIN, -9930)] public int MessageLength { get; set; } [Format(1, EncodingType.BIN, -9920)] public int DatabaseAddressLength { get; set; } [EnumerableFormat("DatabaseAddressLength", -9910)] public List DatabaseAddress { get; set; } [Format(1, EncodingType.BIN, -9900)] [Range(0, 9, "Message ack must range in 0 to 9")] public byte MessageAck { get; set; } public int AckListLength { get { return MessageLength - 1 - DatabaseAddress.Count - 1; } } [EnumerableFormat("AckListLength", -9890)] public List AckList { get; set; } public override string ToString() { string dbAddress = string.Empty; foreach (byte ad in DatabaseAddress) { dbAddress += " " + ad.ToString(); } string akList = string.Empty; foreach (var ak in AckList) { akList += " " + ak.ToString(); } return $"{MessageLength} {DatabaseAddressLength} {dbAddress} {MessageAck} {akList}"; } } }