Add initial sensor interfaces

xyz.openbmc_project.Sensor.Value
xyz.openbmc_project.Sensor.Threshold.Warning
xyz.openbmc_project.Sensor.Threshold.Critical

Change-Id: Ib3e993d0b2e87387993d7b6c1c8b1a47e71b5af1
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/xyz/openbmc_project/Sensor/Threshold/Critical.interface.yaml b/xyz/openbmc_project/Sensor/Threshold/Critical.interface.yaml
new file mode 100644
index 0000000..ad90e6f
--- /dev/null
+++ b/xyz/openbmc_project/Sensor/Threshold/Critical.interface.yaml
@@ -0,0 +1,31 @@
+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
+
+    Additionally, any object implementing Sensor.Threshold.Critical must also
+    implement Sensor.Value.
+
+properties:
+    - name: CriticalHigh
+      type: int64
+      description: >
+          The upper bound of the critical threshold.
+    - name: CriticalLow
+      type: int64
+      description: >
+          The lower bound of the critical threshold.
+    - name: CriticalAlarm
+      type: boolean
+      description: >
+          True if the sensor value has exceeded the defined bounds.
+          False if the sensor value has not exceeded the defined bounds.
+
+          CriticalAlarm may be set to False to clear an alarm condition.
+          The behavior of setting CriticalAlarm to True is undefined.
+
+# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
diff --git a/xyz/openbmc_project/Sensor/Threshold/Warning.interface.yaml b/xyz/openbmc_project/Sensor/Threshold/Warning.interface.yaml
new file mode 100644
index 0000000..84bf8fa
--- /dev/null
+++ b/xyz/openbmc_project/Sensor/Threshold/Warning.interface.yaml
@@ -0,0 +1,31 @@
+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
+
+    Additionally, any object implementing Sensor.Threshold.Warning must also
+    implement Sensor.Value.
+
+properties:
+    - name: WarningHigh
+      type: int64
+      description: >
+          The upper bound of the warning threshold.
+    - name: WarningLow
+      type: int64
+      description: >
+          The lower bound of the warning threshold.
+    - name: WarningAlarm
+      type: boolean
+      description: >
+          True if the sensor value has exceeded the defined bounds.
+          False if the sensor value has not exceeded the defined bounds.
+
+          WarningAlarm may be set to False to clear an alarm condition.
+          The behavior of setting WarningAlarm to True is undefined.
+
+# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
diff --git a/xyz/openbmc_project/Sensor/Value.interface.yaml b/xyz/openbmc_project/Sensor/Value.interface.yaml
new file mode 100644
index 0000000..f8c1585
--- /dev/null
+++ b/xyz/openbmc_project/Sensor/Value.interface.yaml
@@ -0,0 +1,53 @@
+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:
+      temperature
+      fan_tach
+      voltage
+      altitude
+
+    Any service implementing Sensor.Value on one or more objects must
+    implement org.freedesktop.DBus.ObjectManager on the sensors namespace root.
+
+    All Sensor.Value properties are read-only.
+
+properties:
+    - name: Value
+      type: int64
+      description: >
+          The sensor reading.
+    - name: Unit
+      type: enum[self.Unit]
+      description: >
+          The unit of the reading.
+          For objects in the temperature namespace, Unit must be "DegreesC".
+          For objects in the fan_tach namespace, Unit must be "RPMS".
+          For objects in the voltage namespace, Unit must be "Volts".
+          For objects in the altitude namespace, Unit must be "Meters".
+    - name: Scale
+      type: int64
+      description: >
+          The reading scaling factor N, where the actual reading is Value * 10^N.
+
+enumerations:
+    - name: Unit
+      description: >
+        A sensor reading unit.
+      values:
+        - name: DegreesC
+          description: >
+            Temperature as degrees Celsius.
+        - name: RPMS
+          description: >
+            Frequency of rotation as revolutions per minute.
+        - name: Volts
+          description: >
+            Electomotive force as volts.
+        - name: Meters
+          description: >
+            Length as meters.
+
+
+# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4