Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a47d3b48 authored by Paul Colța's avatar Paul Colța Committed by Android (Google) Code Review
Browse files

Merge "HDMICEC: Edit device select API"

parents e1b2fbed b8d44e83
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -3325,14 +3325,14 @@ package android.hardware.hdmi {
  public abstract class HdmiClient {
    method public android.hardware.hdmi.HdmiDeviceInfo getActiveSource();
    method public void selectDevice(int, @NonNull android.hardware.hdmi.HdmiClient.SelectedDeviceCallback);
    method public void selectDevice(int, @NonNull android.hardware.hdmi.HdmiClient.SelectDeviceCallback);
    method public void sendKeyEvent(int, boolean);
    method public void sendVendorCommand(int, byte[], boolean);
    method public void setVendorCommandListener(@NonNull android.hardware.hdmi.HdmiControlManager.VendorCommandListener);
  }
  public static interface HdmiClient.SelectedDeviceCallback {
    method public void onComplete(int);
  public static interface HdmiClient.SelectDeviceCallback {
    method public void onComplete(@android.hardware.hdmi.HdmiControlManager.ControlCallbackResult int, int);
  }
  public final class HdmiControlManager {
+12 −6
Original line number Diff line number Diff line
@@ -30,28 +30,33 @@ public abstract class HdmiClient {
    /**
     * Callback interface used to get the result of {@link #selectDevice}.
     */
    public interface SelectedDeviceCallback {
    public interface SelectDeviceCallback {
        /**
         * Called when the operation is finished.
         * @param result the result value of {@link #selectDevice} and can have the values mentioned
         *               in {@link HdmiControlShellCommand#getResultString}
         * @param logicalAddress logical address of the selected device
         */
        void onComplete(int result);
        void onComplete(@HdmiControlManager.ControlCallbackResult int result, int logicalAddress);
    }

    /**
     * Selects a CEC logical device to be a new active source.
     *
     * <p> Multiple calls to this method are handled in parallel and independently, with no
     * guarantees about the execution order. The caller receives a callback for each call,
     * containing the result of that call only.
     *
     * @param logicalAddress logical address of the device to select
     * @param callback callback to get the result with
     * @throws {@link IllegalArgumentException} if the {@code callback} is null
     */
    public void selectDevice(int logicalAddress, @NonNull SelectedDeviceCallback callback) {
    public void selectDevice(int logicalAddress, @NonNull SelectDeviceCallback callback) {
        if (callback == null) {
            throw new IllegalArgumentException("callback must not be null.");
        }
        try {
            mService.deviceSelect(logicalAddress, getCallbackWrapper(callback));
            mService.deviceSelect(logicalAddress, getCallbackWrapper(callback, logicalAddress));
        } catch (RemoteException e) {
            Log.e(TAG, "failed to select device: ", e);
        }
@@ -60,11 +65,12 @@ public abstract class HdmiClient {
    /**
     * @hide
     */
    private static IHdmiControlCallback getCallbackWrapper(final SelectedDeviceCallback callback) {
    private static IHdmiControlCallback getCallbackWrapper(final SelectDeviceCallback callback,
            int logicalAddress) {
        return new IHdmiControlCallback.Stub() {
            @Override
            public void onComplete(int result) {
                callback.onComplete(result);
                callback.onComplete(result, logicalAddress);
            }
        };
    }