81 lines
2.7 KiB
C#
81 lines
2.7 KiB
C#
namespace Sick.SafetyScanners.DataStructures;
|
|
|
|
/// <summary>
|
|
/// Sensor data feature flags constants and helper methods
|
|
/// Used to configure which data blocks should be included in scan data output
|
|
/// </summary>
|
|
public static class SensorDataFeatures
|
|
{
|
|
/// <summary>
|
|
/// All features enabled (0b11111)
|
|
/// </summary>
|
|
public const ushort All = 0b11111;
|
|
|
|
/// <summary>
|
|
/// No features enabled
|
|
/// </summary>
|
|
public const ushort None = 0;
|
|
|
|
/// <summary>
|
|
/// General system state feature (bit 0)
|
|
/// </summary>
|
|
public const ushort GeneralSystemState = 1 << 0;
|
|
|
|
/// <summary>
|
|
/// Derived settings feature (bit 1)
|
|
/// </summary>
|
|
public const ushort DerivedSettings = 1 << 1;
|
|
|
|
/// <summary>
|
|
/// Measurement data feature (bit 2)
|
|
/// </summary>
|
|
public const ushort MeasurementData = 1 << 2;
|
|
|
|
/// <summary>
|
|
/// Intrusion data feature (bit 3)
|
|
/// </summary>
|
|
public const ushort IntrusionData = 1 << 3;
|
|
|
|
/// <summary>
|
|
/// Application data feature (bit 4)
|
|
/// </summary>
|
|
public const ushort ApplicationData = 1 << 4;
|
|
|
|
/// <summary>
|
|
/// Checks if a certain feature flag is set in the bitset
|
|
/// </summary>
|
|
/// <param name="bitset">The bitset expressed as ushort</param>
|
|
/// <param name="flag">The feature flag to check</param>
|
|
/// <returns>True if the flag is set, false otherwise</returns>
|
|
public static bool IsFlagSet(ushort bitset, ushort flag)
|
|
{
|
|
return (bitset & flag) == flag;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Converts boolean indicators (for the sensor features to be streamed) into a bitset
|
|
/// </summary>
|
|
/// <param name="generalSystemState">Indicator for the general system state channel</param>
|
|
/// <param name="derivedSettings">Turn on/off derived values</param>
|
|
/// <param name="measurementData">Turn on/off measurement data</param>
|
|
/// <param name="intrusionData">Turn on/off safety field intrusion data</param>
|
|
/// <param name="applicationData">Turn on/off application data</param>
|
|
/// <returns>A bitset containing indication flags for each feature channel</returns>
|
|
public static ushort ToFeatureFlags(
|
|
bool generalSystemState,
|
|
bool derivedSettings,
|
|
bool measurementData,
|
|
bool intrusionData,
|
|
bool applicationData)
|
|
{
|
|
return (ushort)(
|
|
(generalSystemState ? GeneralSystemState : 0) +
|
|
(derivedSettings ? DerivedSettings : 0) +
|
|
(measurementData ? MeasurementData : 0) +
|
|
(intrusionData ? IntrusionData : 0) +
|
|
(applicationData ? ApplicationData : 0)
|
|
);
|
|
}
|
|
}
|
|
|