using Edge.Core.Parser.BinaryParser.Attributes;
using Edge.Core.Parser.BinaryParser.MessageEntity;
using Edge.Core.Parser.BinaryParser.Util;
using System;
using System.Collections.Generic;
using System.Text;
namespace Dfs.WayneChina.GilbarcoDispenserPayTerminal.MessageEntities
{
public enum CallingParty
{
///
/// System/后台
///
System,
///
/// Pump/加油机,实际上是终端
///
Pump
}
public class CardMessageBase : MessageTemplateBase
{
#region Constructor
public CardMessageBase(HandleType handleType)
{
Stx = 0xFA;
Handle = Convert.ToByte(handleType);
}
#endregion
[Format(1, EncodingType.BIN, -100)]
public virtual byte Stx { get; set; }
[Format(1, EncodingType.BIN, -99)]
public virtual byte DestinationAddress { get; set; }
[Format(1, EncodingType.BIN, -98)]
public virtual byte SourceAddress { get; set; }
[Format(1, EncodingType.BIN, -97)]
public virtual byte FrameSqNoByte { get; set; }
[Format(2, "%OnSerializingBytesCount", EncodingType.BCD, -96)]
public virtual int BodyLength { get; set; }
[Format(1, EncodingType.BIN, -95)]
public byte Handle { get; set; }
[EnumerableFormat(2, 1000, EncodingType = EncodingType.BIN)]
public virtual List CRC { get; set; }
public CallingParty Caller
{
get
{
if (FrameSqNoByte.GetBit(6) == 1)
return CallingParty.Pump;
return CallingParty.System;
}
}
public virtual int FrameNo
{
get { return FrameSqNoByte & 0x3F; }
}
public override string ToLogString()
{
return GetType().Name + " " + base.ToLogString().Replace(
"FrameSqNoByte:", "(Caller: " + Caller + ", FrameNo: " + FrameNo + ")FrameSqNoByte:");
}
}
}