Files
laatzen/Common/CommonConsole/RFTelegrams/RFTask.cs
T

84 lines
2.1 KiB
C#

namespace Xylem.Common.Production.ProductionUiCordonel.ProductionProcesses.RFTelegrams
{
using global::Common.Hardware.SIRT;
using global::Common.Hardware.SIRT.Tasks;
using System;
using System.Collections.Generic;
public class RFTask : WritePamTask
{
private readonly Stack<SIRTMessage> messages = new Stack<SIRTMessage>();
public SIRTMessage AKN { get; private set; }
public SIRTMessage BUP { get; private set; }
public SIRTMessage LAT { get; private set; }
public SIRTMessage DEBUG { get; private set; }
public SIRTMessage SEMI { get; private set; }
public SIRTMessage LastOrDefault()
=> this.messages.Count > 0
? this.messages.Peek()
: new SIRTMessage();
public override string ToString()
=> BitConverter.ToString(this.request.Payload);
protected override void OnMessageSent(SIRTMessage request)
=> this.messages.Push(request);
protected override void OnUnknownReceived(SIRTMessage unknown)
=> this.messages.Push(unknown);
protected override void OnAKNReceived(SIRTMessage akn)
{
this.AKN = akn;
this.messages.Push(akn);
}
protected override void OnBUPReceived(SIRTMessage bup)
{
this.BUP = bup;
this.messages.Push(bup);
}
protected override void OnLATReceived(SIRTMessage lat)
{
this.LAT = lat;
this.messages.Push(lat);
}
protected override void OnDEBUGReceived(SIRTMessage debug)
{
this.DEBUG = debug;
this.messages.Push(debug);
}
protected override void OnSEMIReceived(SIRTMessage semi)
{
this.SEMI = semi;
this.messages.Push(semi);
if (semi.Payload.Length > 11)
{
var pamStatus = new PAMStatus(semi.Payload[11]);
if (pamStatus == PAMStatus.OK)
{
base.OnSEMIReceived(semi);
}
}
}
}
}