// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Private API for HDMI CEC functionality.
[platforms=("chromeos")]
namespace cecPrivate {

  enum DisplayCecPowerState {
    // There was an error querying the power state of the display.
    error,

    // The kernel adapter for the CEC endpoint isn’t configured (no EDID set).
    adapterNotConfigured,

    // No device ACKed the request on the CEC bus.
    noDevice,

    // The display is a powered on state.
    on,

    // The display is in standby mode.
    standby,

    // The display is currently transitioning to an awake state. It can't be
    // relied on to show any output yet.
    transitioningToOn,

    // The display is currently transitioning to standby.
    transitioningToStandby,

    // Found a CEC endpoint but unable to determine the power state.
    unknown
  };

  callback DisplayCecPowerStateCallback =
      void(DisplayCecPowerState[] powerStates);

  callback ChangePowerStateCallback = void();

  interface Functions {
    // Attempt to put all HDMI CEC compatible devices in standby.
    //
    // This is not guaranteed to have any effect on the connected displays.
    // Displays that do not support HDMI CEC will not be affected.
    //
    // |callback| will be run as soon as all displays have been requested to
    // change their power state.
    static void sendStandBy(optional ChangePowerStateCallback callback);

    // Attempt to announce this device as the active input source towards all
    // HDMI CEC enabled displays connected, waking them from standby if
    // necessary.
    //
    // |callback| will be run as soon as all displays have been requested to
    // change their power state.
    static void sendWakeUp(optional ChangePowerStateCallback callback);

    // Queries all HDMI CEC capable displays for their current power state.
    static void queryDisplayCecPowerState(
        DisplayCecPowerStateCallback callback);
  };
};
