namespace Sick.SafetyScanners.DataStructures;
///
/// Contains application outputs from a UDP data packet
///
public sealed class ApplicationOutputs
{
///
/// Gets or sets the state of the non-safe cut-off paths (eval out)
///
public IReadOnlyList EvalOut { get; init; } = Array.Empty();
///
/// Gets or sets whether a cut-off path from the output paths is safe
///
public IReadOnlyList EvalOutIsSafe { get; init; } = Array.Empty();
///
/// Gets or sets whether the output path is valid
///
public IReadOnlyList EvalOutIsValid { get; init; } = Array.Empty();
///
/// Gets or sets the currently active monitoring case numbers
///
public IReadOnlyList MonitoringCases { get; init; } = Array.Empty();
///
/// Gets or sets whether the corresponding monitoring case number is valid
///
public IReadOnlyList MonitoringCaseFlags { get; init; } = Array.Empty();
///
/// Gets or sets the state of the sleep mode output
///
public sbyte SleepModeOutput { get; init; }
///
/// Gets or sets whether a contamination warning is present
///
public bool HostErrorFlagContaminationWarning { get; init; }
///
/// Gets or sets whether a contamination error is present
///
public bool HostErrorFlagContaminationError { get; init; }
///
/// Gets or sets whether a manipulation error is present
///
public bool HostErrorFlagManipulationError { get; init; }
///
/// Gets or sets whether glare is present
///
public bool HostErrorFlagGlare { get; init; }
///
/// Gets or sets whether a reference contour is intruded
///
public bool HostErrorFlagReferenceContourIntruded { get; init; }
///
/// Gets or sets whether a critical error is present
///
public bool HostErrorFlagCriticalError { get; init; }
///
/// Gets or sets the first linear velocity output
///
public short Velocity0 { get; init; }
///
/// Gets or sets the second linear velocity output
///
public short Velocity1 { get; init; }
///
/// Gets or sets whether the first linear velocity output is valid
///
public bool IsVelocity0Valid { get; init; }
///
/// Gets or sets whether the second linear velocity output is valid
///
public bool IsVelocity1Valid { get; init; }
///
/// Gets or sets whether the first linear velocity output is transmitted safely
///
public bool IsVelocity0TransmittedSafely { get; init; }
///
/// Gets or sets whether the second linear velocity output is transmitted safely
///
public bool IsVelocity1TransmittedSafely { get; init; }
///
/// Gets or sets the resulting velocity for each monitoring case table
///
public IReadOnlyList ResultingVelocity { get; init; } = Array.Empty();
///
/// Gets or sets whether the resulting velocities are valid
///
public IReadOnlyList ResultingVelocityIsValid { get; init; } = Array.Empty();
///
/// Gets or sets whether the sleep mode is valid
///
public bool FlagsSleepModeOutputIsValid { get; init; }
///
/// Gets or sets whether the error flags are valid
///
public bool FlagsHostErrorFlagsAreValid { get; init; }
}