44 lines
1.7 KiB
C#
44 lines
1.7 KiB
C#
using System.Xml.Linq;
|
|
|
|
namespace HC_APTBS.Models
|
|
{
|
|
/// <summary>
|
|
/// Defines a single alarm condition monitored by the bench controller.
|
|
/// Alarms are bit-mapped: the bench asserts a bitmask in the Alarms CAN parameter
|
|
/// (<see cref="BenchParameterNames.Alarms"/>) and each bit corresponds to a named condition.
|
|
/// </summary>
|
|
public class Alarm
|
|
{
|
|
/// <summary>Bit position in the alarm bitmask (0-based).</summary>
|
|
public int Bit { get; set; }
|
|
|
|
/// <summary>Human-readable description of this alarm condition.</summary>
|
|
public string Description { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// When true, this alarm immediately halts any running test and requires
|
|
/// operator acknowledgement before the bench can be restarted.
|
|
/// </summary>
|
|
public bool IsCritical { get; set; }
|
|
|
|
/// <summary>True while this alarm condition is currently active.</summary>
|
|
public bool IsActive { get; set; }
|
|
|
|
/// <summary>Serialises this alarm to XML for persistence in alarms.xml.</summary>
|
|
public XElement ToXml()
|
|
=> new XElement("Alarm",
|
|
new XAttribute("bit", Bit),
|
|
new XAttribute("desc", Description),
|
|
new XAttribute("critical", IsCritical));
|
|
|
|
/// <summary>Deserialises an alarm from an XML element.</summary>
|
|
public static Alarm FromXml(XElement element)
|
|
=> new Alarm
|
|
{
|
|
Bit = int.Parse(element.Attribute("bit")?.Value ?? "0"),
|
|
Description = element.Attribute("desc")?.Value ?? string.Empty,
|
|
IsCritical = bool.Parse(element.Attribute("critical")?.Value ?? "false")
|
|
};
|
|
}
|
|
}
|