154 lines
5.7 KiB
C#
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();
|
|
}
|
|
}
|
|
|
|
}
|