namespace Sick.SafetyScanners.DataStructures;
///
/// Contains the general system state including run/standby modes, cut-off paths, monitoring cases, and errors
///
public sealed class GeneralSystemState
{
///
/// Gets or sets whether run mode is active
///
public bool IsRunModeActive { get; init; }
///
/// Gets or sets whether standby mode is active
///
public bool IsStandbyModeActive { get; init; }
///
/// Gets or sets whether a contamination warning exists
///
public bool HasContaminationWarning { get; init; }
///
/// Gets or sets whether a contamination error exists
///
public bool HasContaminationError { get; init; }
///
/// Gets or sets whether the reference contour status is true
///
public bool ReferenceContourStatus { get; init; }
///
/// Gets or sets whether manipulation status is set to true
///
public bool ManipulationStatus { get; init; }
///
/// Gets or sets the state for all safe cut-off paths
///
public IReadOnlyList SafeCutOffPaths { get; init; } = [];
///
/// Gets or sets the state of all non-safe cut-off paths
///
public IReadOnlyList NonSafeCutOffPaths { get; init; } = [];
///
/// Gets or sets whether a cut-off path has to be reset
///
public IReadOnlyList ResetRequiredCutOffPaths { get; init; } = [];
///
/// Gets or sets the current monitoring case number for table 1
///
public byte CurrentMonitoringCaseNoTable1 { get; init; }
///
/// Gets or sets the current monitoring case number for table 2
///
public byte CurrentMonitoringCaseNoTable2 { get; init; }
///
/// Gets or sets the current monitoring case number for table 3
///
public byte CurrentMonitoringCaseNoTable3 { get; init; }
///
/// Gets or sets the current monitoring case number for table 4
///
public byte CurrentMonitoringCaseNoTable4 { get; init; }
///
/// Gets or sets whether an application error exists
///
public bool HasApplicationError { get; init; }
///
/// Gets or sets whether a device error exists
///
public bool HasDeviceError { get; init; }
///
/// Gets whether general system state is empty (not enabled)
///
public bool IsEmpty { get; init; }
}