namespace Sick.SafetyScanners.DataStructures;
///
/// Contains the configuration data from a COLA2 variable command response
/// Used for current and persistent sensor configuration
///
public sealed class ConfigData
{
///
/// Gets or sets the version indicator (e.g., "V" for version)
///
public string VersionCVersion { get; init; } = string.Empty;
///
/// Gets or sets the major version number
///
public byte VersionMajorVersionNumber { get; init; }
///
/// Gets or sets the minor version number
///
public byte VersionMinorVersionNumber { get; init; }
///
/// Gets or sets the version release number
///
public byte VersionReleaseNumber { get; init; }
///
/// Gets or sets the host IP address
///
public string HostIp { get; init; } = string.Empty;
///
/// Gets or sets the host UDP port
///
public ushort HostUdpPort { get; init; }
///
/// Gets or sets the channel number (0-3)
///
public byte Channel { get; init; }
///
/// Gets or sets whether the channel is enabled
///
public bool Enabled { get; init; }
///
/// Gets or sets the interface type
///
public InterfaceType EInterfaceType { get; init; }
///
/// Gets or sets the publishing frequency (publish every n-th scan)
///
public ushort PublishingFrequency { get; init; }
///
/// Gets or sets the start angle in radians
///
public double StartAngle { get; init; }
///
/// Gets or sets the end angle in radians
///
public double EndAngle { get; init; }
///
/// Gets or sets the enabled features (bit flags)
/// Bit 0: GeneralSystemState, Bit 1: DerivedSettings, Bit 2: MeasurementData,
/// Bit 3: IntrusionData, Bit 4: ApplicationData
///
public ushort Features { get; init; }
///
/// Gets or sets whether general system state feature is enabled
///
public bool GeneralSystemStateEnabled { get; init; }
///
/// Gets or sets whether derived settings feature is enabled
///
public bool DerivedSettingsEnabled { get; init; }
///
/// Gets or sets whether measurement data feature is enabled
///
public bool MeasurementDataEnabled { get; init; }
///
/// Gets or sets whether intrusion data feature is enabled
///
public bool IntrusionDataEnabled { get; init; }
///
/// Gets or sets whether application data feature is enabled
///
public bool ApplicationDataEnabled { get; init; }
// Derived values (similar to DerivedValues structure)
///
/// Gets or sets the multiplication factor for beam distances
///
public ushort DerivedMultiplicationFactor { get; init; }
///
/// Gets or sets the number of beams
///
public ushort DerivedNumberOfBeams { get; init; }
///
/// Gets or sets the scan time in milliseconds
///
public ushort DerivedScanTime { get; init; }
///
/// Gets or sets the derived start angle in radians
///
public double DerivedStartAngle { get; init; }
///
/// Gets or sets the angular beam resolution in radians
///
public double DerivedAngularBeamResolution { get; init; }
///
/// Gets or sets the interbeam period in microseconds
///
public uint DerivedInterbeamPeriod { get; init; }
}