description: >
    Implement to provide warning class sensor thresholds.  Objects implementing
    Sensor.Threshold.Warning 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


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

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

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

          WarningAlarmLow may be set to False to clear an alarm condition.
          The behavior of setting WarningAlarmLow to True is undefined.

signals:
    - name: WarningHighAlarmAsserted
      description: >
          The high threshold alarm asserted.
      properties:
         - name: SensorValue
           type: double
           description: >
               The sensor value that triggered the alarm change.
    - name: WarningHighAlarmDeasserted
      description: >
          The high threshold alarm deasserted.
      properties:
         - name: SensorValue
           type: double
           description: >
               The sensor value that triggered the alarm change.
    - name: WarningLowAlarmAsserted
      description: >
          The low threshold alarm asserted.
      properties:
         - name: SensorValue
           type: double
           description: >
               The sensor value that triggered the alarm change.
    - name: WarningLowAlarmDeasserted
      description: >
          The low threshold alarm deasserted.
      properties:
         - name: SensorValue
           type: double
           description: >
               The sensor value that triggered the alarm change.
