Files
DP44/DataPRO/TDASCommands/TestTriggerCommands.cs
2026-04-17 14:55:32 -04:00

154 lines
5.7 KiB
C#

using System;
using System.Text;
using DTS.Common.ICommunication;
namespace DTS.DASLib.Command.TDAS
{
internal class TestTriggerCommandString : CommandString
{
protected override string _CommandString => "TESTTRIG";
protected override string _CommandDescription => "Test trigger";
public string SubCommand { get; set; }
public string Status { get; set; }
public override byte[] GetParameters()
{
var sb = new StringBuilder();
sb.Append(" ");
sb.Append(SubCommand);
return Encoding.ASCII.GetBytes(sb.ToString());
}
}
public class TestTrigger : CommandBase
{
public int ModuleIndex
{
get => ((TDASCommandPacketBase)baseCommand).ModuleIndex;
set => ((TDASCommandPacketBase)baseCommand).ModuleIndex = value;
}
public enum SubCommandValues { ARM, STATUS, OFF };
public enum StatusValues { ARMED, OFF };
public SubCommandValues SubCommand
{
get => (SubCommandValues)Enum.Parse(typeof(SubCommandValues), _CommandString.SubCommand);
set => _CommandString.SubCommand = value.ToString();
}
public StatusValues TriggerStatus => (StatusValues)Enum.Parse(typeof(StatusValues), _CommandString.Status);
private TestTriggerCommandString _CommandString
{
get
{
var command = baseCommand as TDASCommandPacketBase;
return command?.GetCommandStringObject(0) as TestTriggerCommandString;
}
}
public TestTrigger(DTS.Common.Interface.DASFactory.ICommunication sock)
: base(sock)
{
var command = new TDASCommandPacketBase(new TestTriggerCommandString())
{
RebuildBytes = true,
RackCommand = false
};
baseCommand = command;
_CommandString.SubCommand = SubCommandValues.STATUS.ToString(); ;
}
public TestTrigger(DTS.Common.Interface.DASFactory.ICommunication sock, int msTimeout)
: base(sock, msTimeout)
{
var command = new TDASCommandPacketBase(new TestTriggerCommandString())
{
RackCommand = false,
RebuildBytes = true
};
baseCommand = command;
_CommandString.SubCommand = SubCommandValues.STATUS.ToString();
}
protected override void ProcessData()
{
if (null == baseResponse) { return; }
var s = Encoding.ASCII.GetString(baseResponse.ToBytes());
var start = s.IndexOf(_CommandString.GetCommandPortion(), StringComparison.Ordinal) + _CommandString.GetCommandPortion().Length + 1;
var end = s.IndexOf("\r\n", StringComparison.Ordinal);
if (start >= 0 && end > start)
{
_responseData = s.Substring(start, end - start);
}
else { return; }
var tokens = ResponseData.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
if (2 <= tokens.Length)
{
_CommandString.Status = tokens[1];
}
}
}
internal class TestTriggerBroadcastCommandString : CommandString
{
protected override string _CommandString => ModuleIndex >= 0 ? $"*{ModuleIndex}TESTTRIG" : "*TESTTRIG";
protected override string _CommandDescription => ModuleIndex >= 0 ? $"Test trigger broadcast *{ModuleIndex}TESTTRIG" : "Test trigger broadcast *TESTTRIG";
public int ModuleIndex { get; set; }
public string SubCommand { get; set; }
public override byte[] GetParameters()
{
var sb = new StringBuilder();
sb.Append(" ");
sb.Append(SubCommand);
return Encoding.ASCII.GetBytes(sb.ToString());
}
public TestTriggerBroadcastCommandString(int moduleIndex) { ModuleIndex = moduleIndex; }
}
public class TestTriggerBroadcast : CommandBase
{
private TestTriggerBroadcastCommandString _CommandString
{
get
{
var command = baseCommand as TDASCommandPacketBase;
return command?.GetCommandStringObject(0) as TestTriggerBroadcastCommandString;
}
}
public TestTrigger.SubCommandValues SubCommand
{
get => (TestTrigger.SubCommandValues)Enum.Parse(typeof(TestTrigger.SubCommandValues), _CommandString.SubCommand);
set => _CommandString.SubCommand = value.ToString();
}
public TestTriggerBroadcast(DTS.Common.Interface.DASFactory.ICommunication sock, int moduleIndex)
: base(sock)
{
var command = new TDASCommandPacketBase(new TestTriggerBroadcastCommandString(moduleIndex));
command.RackCommand = false;
command.RebuildBytes = true;
baseCommand = command;
_CommandString.SubCommand = TestTrigger.SubCommandValues.STATUS.ToString();
}
public TestTriggerBroadcast(DTS.Common.Interface.DASFactory.ICommunication sock, int moduleIndex, int msTimeout)
: base(sock, msTimeout)
{
var command = new TDASCommandPacketBase(new TestTriggerBroadcastCommandString(moduleIndex));
command.RackCommand = false;
command.RebuildBytes = true;
baseCommand = command;
_CommandString.SubCommand = TestTrigger.SubCommandValues.STATUS.ToString();
}
}
}