43 lines
1.5 KiB
C#
43 lines
1.5 KiB
C#
using Sick.SafetyScanners.DataStructures;
|
|
using Sick.SafetyScanners.Helpers;
|
|
|
|
namespace Sick.SafetyScanners.DataProcessing;
|
|
|
|
/// <summary>
|
|
/// Parser for RequiredUserAction response from COLA2 variable command
|
|
/// Thread-safe implementation
|
|
/// </summary>
|
|
public sealed class ParseRequiredUserAction
|
|
{
|
|
/// <summary>
|
|
/// Parses the required user action from a TCP sequence (COLA2 response)
|
|
/// Matches: ParseRequiredUserActionData::parseTCPSequence in C++
|
|
/// </summary>
|
|
public RequiredUserAction ParseTcpSequence(PacketBuffer buffer)
|
|
{
|
|
var span = buffer.GetBufferSpan();
|
|
return ReadRequiredUserAction(span);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Matches: ParseRequiredUserActionData::readRequiredUserAction in C++
|
|
/// </summary>
|
|
private RequiredUserAction ReadRequiredUserAction(ReadOnlySpan<byte> span)
|
|
{
|
|
ushort word = ReadWriteHelper.ReadUint16LittleEndian(span, 0);
|
|
|
|
return new RequiredUserAction
|
|
{
|
|
ConfirmConfiguration = (word & (0x01 << 0)) != 0,
|
|
CheckConfiguration = (word & (0x01 << 1)) != 0,
|
|
CheckEnvironment = (word & (0x01 << 2)) != 0,
|
|
CheckApplicationInterfaces = (word & (0x01 << 3)) != 0,
|
|
CheckDevice = (word & (0x01 << 4)) != 0,
|
|
RunSetupProcedure = (word & (0x01 << 5)) != 0,
|
|
CheckFirmware = (word & (0x01 << 6)) != 0,
|
|
Wait = (word & (0x01 << 7)) != 0
|
|
};
|
|
}
|
|
}
|
|
|