Files
BQP/srcs/RobotNet10/RobotApp/Communication/Sick.SafetyScanners/DataProcessing/ParseRequiredUserAction.cs
2026-07-13 09:25:40 +07:00

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
};
}
}