84 lines
2.1 KiB
C#
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);
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|