power-recovery: introduce CurrentPowerStatus to chassis

The power coming into a chassis can have its own status. For example, if
power has been lost (blackout) but the system has an uninterruptible
power supply(UPS) connected, then chassis power could still be on but
its important to provide the fact that the system is running off of a
UPS to other BMC software.

For example, IBM has a policy that it will allow a system to remain on
if it is already on when a blackout or brownout occurs (and running on
a UPS), but it will not allow a user to power a system on if in one of
these conditions. IBM will also not allow a system to power on until
a UPS is fully charged.

The design for this can be found over in the following series:
  https://gerrit.openbmc-project.xyz/c/openbmc/docs/+/48210

Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: I4300167f3baa66bc9229651178d161fc12c92e1b
diff --git a/yaml/xyz/openbmc_project/State/Chassis.interface.yaml b/yaml/xyz/openbmc_project/State/Chassis.interface.yaml
index cc8a130..1fc8fe3 100644
--- a/yaml/xyz/openbmc_project/State/Chassis.interface.yaml
+++ b/yaml/xyz/openbmc_project/State/Chassis.interface.yaml
@@ -16,6 +16,15 @@
           A user can determine if a chassis is in transition by comparing
           the CurrentPowerState and RequestedPowerTransition properties.
 
+    - name: CurrentPowerStatus
+      type: enum[self.PowerStatus]
+      description: >
+          A read-only property describing the current chassis power status.
+          This property aggregates all available information about the status
+          of the power coming into the chassis. Note that this is different
+          then the CurrentPowerState in that it provides status of the power
+          coming into the chassis, not the actual state of the chassis power.
+
     - name: LastStateChangeTime
       type: uint64
       description: >
@@ -56,3 +65,26 @@
         - name: 'TransitioningToOn'
           description: >
             Firmware is transitioning the chassis to an On state
+
+    - name: PowerStatus
+      description: >
+        The current status of the chassis power
+      values:
+        - name: 'Undefined'
+          description: >
+            Chassis power status is unknown
+        - name: 'BrownOut'
+          description: >
+            Chassis power status is in a brownout condition.
+        - name: 'UninterruptiblePowerSupply'
+          description: >
+            Chassis power is being provided via an uninterruptible power
+            supply. Note that some systems may choose to continue to use this
+            status, even once power has returned to the system, to indicate the
+            uninterruptible power supply is charging or is below a certain
+            threshold of charged. This provides system owners the flexibility on
+            whether their system requires a certain level of charged
+            uninterruptible power supply to be in a 'Good' state or not.
+        - name: 'Good'
+          description: >
+            Chassis power status is in a good condition