description: >
    Implement to provide critical class sensor thresholds.  Objects implementing
    Sensor.Threshold.Critical must be instantiated in the correct hierarchy within
    the sensors namespace.  The following sensor hierarchies are recognized:
      temperature
      fan_tach
      voltage
      altitude
      current
      power
      energy
      utilization
      airflow
      pressure

    Additionally, any object implementing Sensor.Threshold.Critical must also
    implement Sensor.Value.

properties:
    - name: CriticalHigh
      type: double
      default: NaN
      description: >
          The upper bound of the critical threshold.  A value of 'NaN' is used
          to indicate there is no threshold of this type.
    - name: CriticalLow
      type: double
      default: NaN
      description: >
          The lower bound of the critical threshold.  A value of 'NaN' is used
          to indicate there is no threshold of this type.
    - name: CriticalAlarmHigh
      type: boolean
      description: >
          True if the sensor value has exceeded the defined bound.
          False if the sensor value has not exceeded the defined bound.

          CriticalAlarmHigh may be set to False to clear an alarm condition.
          The behavior of setting CriticalAlarmHigh to True is undefined.
    - name: CriticalAlarmLow
      type: boolean
      description: >
          True if the sensor value has exceeded the defined bound.
          False if the sensor value has not exceeded the defined bound.

          CriticalAlarmLow may be set to False to clear an alarm condition.
          The behavior of setting CriticalAlarmLow to True is undefined.
signals:
    - name: CriticalHighAlarmAsserted
      description: >
          The high threshold alarm asserted.
      properties:
         - name: SensorValue
           type: double
           description: >
               The sensor value that triggered the alarm change.
    - name: CriticalHighAlarmDeasserted
      description: >
          The high threshold alarm deasserted.
      properties:
         - name: SensorValue
           type: double
           description: >
               The sensor value that triggered the alarm change.
    - name: CriticalLowAlarmAsserted
      description: >
          The low threshold alarm asserted.
      properties:
         - name: SensorValue
           type: double
           description: >
               The sensor value that triggered the alarm change.
    - name: CriticalLowAlarmDeasserted
      description: >
          The low threshold alarm deasserted.
      properties:
         - name: SensorValue
           type: double
           description: >
               The sensor value that triggered the alarm change.
