namespace Common.Hardware.SIRT { using Common.Hardware.SIRT.Parameters; using System; public partial class SIRTTask { internal byte[] Start() { if (this.State != SIRTTaskState.Cancelled) { this.State = SIRTTaskState.Running; this.timeoutTimer.Stop(); this.timeoutTimer.Start(); return this.ToByteArray(); } return Array.Empty(); } internal class AnswerTask : SIRTTask { public AnswerTask() : base(0, 1000) { } public byte[] Last { get; private set; } protected override void ProcessResponse(SIRTMessage response) { this.Last = response.Data ?? new byte[] { }; base.ProcessResponse(response); } } internal static readonly AnswerTask ActivateSIRT = new AnswerTask { Cmd = SIRTMessage.W_REG, RequestAddress = 0x20000000, P2 = 0x05, Data = new byte[] { new SirtOperating { /* default */ }, new BluetoothOperating { BtOff = true }, new RFModuleOperating { RfOff = true }, new RFModuleOperating { OpMode = OperatingModes.ReceiveF1TransmitSensusRFF3 }, new PamTimeout { Minutes = 1 } } }; internal static readonly AnswerTask IdentifySIRT = new AnswerTask { Cmd = SIRTMessage.R_REG, RequestAddress = 0x11001820, P2 = 0x08 }; internal static readonly AnswerTask ReadPamPool = new AnswerTask { Cmd = SIRTMessage.R_PAM, RequestAddress = 0xFFFFFFFF }; internal static AnswerTask DeleteFromPamPool(uint address) => new AnswerTask { Cmd = SIRTMessage.W_PAM, P1 = new P811 { DelPamAdr = true }, RequestAddress = address }; } }