description: >
    Implement to specify the power consumption cap and bounds

properties:
    - name: PowerCap
      type: uint32
      description: >
          Power cap value. This is the user specified power cap.  When enabled
          the power usage of the system will be limited to keep the power at or
          below this cap.  This value is in Watts.

    - name: PowerCapEnable
      type: boolean
      description: >
          Power cap enable.  Set to true to enable the PowerCap, false to
          disable it.

    #TODO: These following bounds are currently owned by Settings but need to be
    #      written by OCC.Control service so must be writable for now.
    - name: MinPowerCapValue
      type: uint32
      #flags:
      #    - readonly
      default: 0
      description: The Minimum supported PowerCap setting.

    - name: MaxPowerCapValue
      type: uint32
      #flags:
      #    - readonly
      default: maxint
      description: The Maximum supported PowerCap setting.

    - name: MinSoftPowerCapValue
      type: uint32
      #flags:
      #    - readonly
      default: 0
      description: >
          Minimum supported soft user PowerCap setting. The min soft user
          PowerCap value is normally less than or equal to the MinPowerCapValue.
          When the PowerCap is set to any value between MinSoftPowerCapValue and
          MinPowerCapValue an attempt will be made to maintain the cap but it
          will not be guaranteed.

    - name: ExceptionAction
      type: enum[self.ExceptionActions]
      default: NoAction
      description: >
          Exception Actions, taken if the Power Limit is exceeded and cannot be
          controlled within the Correction time limit.

    - name: CorrectionTime
      type: uint64
      default: 0
      description: >
          Correction Time Limit in microseconds. Maximum time taken to limit the
          power after the platform power has reached the power limit before the
          Exception Action will be taken. The Exception Action shall be taken if
          the system power usage constantly exceeds the specified power limit
          for more than the Correction Time Limit interval. The Correction Time
          Limit timeout automatically restarts if the system power meets or
          drops below the Power Limit.

    - name: SamplingPeriod
      type: uint64
      default: 1000000
      description: >
          Management application Statistics Sampling period in microseconds.

enumerations:
    - name: ExceptionActions
      description: >
          Exception actions, taken if the Power Limit is exceeded and cannot be
          controlled within the Correction Time Limit.
      values:
          - name: NoAction
            description: >
                No action is called.

          - name: HardPowerOff
            description: >
                Hard Power Off system and log event.

          - name: LogEventOnly
            description: >
                Log Event Only.

          - name: Oem
            description: >
                OEM defined action.
