description: >
    Implement to provide pass-through mechanism to the On Chip Controller (OCC).
methods:
    - name: Send
      description: >
          Pass through a command to the OCC.
      parameters:
        - name: command
          # TODO via https://github.com/openbmc/openbmc/issues/1160. This should
          # change to array[byte]. As of now, the REST server maps any numeric
          # data to int32.
          type: array[int32]
          description: >
              An array of integers representing the command and payload. This
              should still be bytes worth of data (as though using array[byte]),
              so each entry in the array should pack as many bytes as possible.
      returns:
        - name: response
          # TODO via https://github.com/openbmc/openbmc/issues/1160. This should
          # change to array[byte]. As of now, the REST server maps any numeric
          # data to int32.
          type: array[int32]
          description: >
              An array of integers representing the response. This
              should still be bytes worth of data (as though using array[byte]),
              so each entry in the array should pack as many bytes as possible.

    - name: SetMode
      description: >
          Change the power mode of the system.
      parameters:
        - name: mode
          type: byte
          description: >
              Desired power mode of the system.
        - name: frequencyPoint
          type: uint16
          description: >
              Frequency point required by some power modes.
      returns:
        - name: status
          type: boolean
          description: >
              Returns true if the mode change was accepted.

