description: >
    Implement to provide sensor readings.  Objects implementing Sensor.Value
    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

    Any service implementing Sensor.Value on one or more objects must implement
    org.freedesktop.DBus.ObjectManager on /xyz/openbmc_project/sensors.

    All Sensor.Value properties are read-only, unless the
    xyz.openbmc_project.Sensor.ValueMutability interface is present on the same
    object path. In that case, refer to the docs for ValueMutability interface.

properties:
    - name: Value
      type: double
      description: >
          The sensor reading.
    - name: MaxValue
      type: double
      default: infinity
      description: >
          The Maximum supported sensor reading.
    - name: MinValue
      type: double
      default: -infinity
      description: >
          The Minimum supported sensor reading.
    - name: Unit
      type: enum[self.Unit]
      description: >
          The unit of the reading.  Immutable once set for a sensor. For objects
          in the airflow namespace, Unit must be "CFM" For objects in the
          altitude namespace, Unit must be "Meters". For objects in the current
          namespace, Unit must be "Amperes". For objects in the energy
          namespace, Unit must be "Joules". For objects in the fan_tach
          namespace, Unit must be "RPMS". For objects in the humidity namespace,
          Unit must be "PercentRH" For objects in the power namespace, Unit must
          be "Watts". For objects in the pressure namespace, Unit must be
          "Pascals" For objects in the temperature namespace, Unit must be
          "DegreesC". For objects in the utilization namespace, Unit must be
          "Percent" For objects in the voltage namespace, Unit must be "Volts",
          For objects in the liquidflow namespace, Unit must be "LPM".

enumerations:
    - name: Unit
      description: >
          A sensor reading unit.
      values:
          - name: Amperes
            description: >
                Electrical charge flow rate as Amperes.
          - name: CFM
            description: >
                To calculate Air Flow in Cubic Feet per Minute
          - name: DegreesC
            description: >
                Temperature as degrees Celsius.
          - name: Joules
            description: >
                Energy transfer as Joules.
          - name: LPM
            description: >
                To calculate the liquid flow in Liters Per Minute.
          - name: Meters
            description: >
                Length as meters.
          - name: Percent
            description: >
                Resource utilization as a percentage.
          - name: PercentRH
            description: >
                Relative humidity as a percentage.
          - name: Pascals
            description: >
                Pressure as pascals.
          - name: RPMS
            description: >
                Frequency of rotation as revolutions per minute.
          - name: Volts
            description: >
                Electomotive force as volts.
          - name: Watts
            description: >
                Rate of energy transfer as Watts.

associations:
    - name: inventory
      description: >
          Sensors may implement an 'inventory' to 'sensors' association with the
          inventory item related to it.
      reverse_names:
          - sensors
      required_endpoint_interfaces:
          - xyz.openbmc_project.Inventory.Item
    - name: monitoring
      description: >
          Sensors may monitor the BMC's resource utilization and implement an
          association to the Bmc item.
      reverse_names:
          - monitored_by
      required_endpoint_interfaces:
          - xyz.openbmc_project.Inventory.Item.Bmc

paths:
    - namespace: /xyz/openbmc_project/sensors
      segments:
          - name: Airflow
            value: airflow
          - name: Altitude
            value: altitude
          - name: Current
            value: current
          - name: Energy
            value: energy
          - name: FanTach
            value: fan_tach
          - name: Humidity
            value: humidity
          - name: Liquidflow
            value: liquidflow
          - name: Power
            value: power
          - name: Pressure
            value: pressure
          - name: Temperature
            value: temperature
          - name: Utilization
            value: utilization
          - name: Voltage
            value: voltage
