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

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

properties:
    - name: PerformanceLossHigh
      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: PerformanceLossLow
      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: PerformanceLossAlarmHigh
      type: boolean
      description: >
          True if the sensor value has exceeded the defined bound. False if the
          sensor value has not exceeded the defined bound.

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

          PerformanceLossAlarmLow may be set to False to clear an alarm
          condition. The behavior of setting PerformanceLossAlarmLow to True is
          undefined.
signals:
    - name: PerformanceLossHighAlarmAsserted
      description: >
          The high threshold alarm asserted.
      properties:
          - name: SensorValue
            type: double
            description: >
                The sensor value that triggered the alarm change.
    - name: PerformanceLossHighAlarmDeasserted
      description: >
          The high threshold alarm deasserted.
      properties:
          - name: SensorValue
            type: double
            description: >
                The sensor value that triggered the alarm change.
    - name: PerformanceLossLowAlarmAsserted
      description: >
          The low threshold alarm asserted.
      properties:
          - name: SensorValue
            type: double
            description: >
                The sensor value that triggered the alarm change.
    - name: PerformanceLossLowAlarmDeasserted
      description: >
          The low threshold alarm deasserted.
      properties:
          - name: SensorValue
            type: double
            description: >
                The sensor value that triggered the alarm change.
