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

Commit b3fbf9db authored by Jinsuk Kim's avatar Jinsuk Kim
Browse files

Replace the MHL register name 'scratchpad' with 'vendor'

Bug: 17479050
Change-Id: If6fe2949d17ad2d407df5b797c1915eb0e9bf421
parent 593f2d33
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -156,7 +156,7 @@ LOCAL_SRC_FILES += \
	core/java/android/hardware/hdmi/IHdmiDeviceEventListener.aidl \
	core/java/android/hardware/hdmi/IHdmiHotplugEventListener.aidl \
	core/java/android/hardware/hdmi/IHdmiInputChangeListener.aidl \
	core/java/android/hardware/hdmi/IHdmiMhlScratchpadCommandListener.aidl \
	core/java/android/hardware/hdmi/IHdmiMhlVendorCommandListener.aidl \
	core/java/android/hardware/hdmi/IHdmiRecordListener.aidl \
	core/java/android/hardware/hdmi/IHdmiSystemAudioModeChangeListener.aidl \
	core/java/android/hardware/hdmi/IHdmiVendorCommandListener.aidl \
+22 −22
Original line number Diff line number Diff line
@@ -36,9 +36,9 @@ public final class HdmiTvClient extends HdmiClient {
    private static final String TAG = "HdmiTvClient";

    /**
     * Size of MHL scratchpad register.
     * Size of MHL register for vendor command
     */
    public static final int SCRATCHPAD_DATA_SIZE = 16;
    public static final int VENDOR_DATA_SIZE = 16;

    HdmiTvClient(IHdmiControlService service) {
        super(service);
@@ -332,31 +332,31 @@ public final class HdmiTvClient extends HdmiClient {
    }

    /**
     * Interface used to get incoming MHL scratchpad command.
     * Interface used to get incoming MHL vendor command.
     */
    public interface HdmiMhlScratchpadCommandListener {
    public interface HdmiMhlVendorCommandListener {
        void onReceived(int portId, int offset, int length, byte[] data);
    }

    /**
     * Set {@link HdmiMhlScratchpadCommandListener} to get incoming MHL sSratchpad command.
     * Set {@link HdmiMhlVendorCommandListener} to get incoming MHL vendor command.
     *
     * @param listener to receive incoming MHL Scratchpad command
     * @param listener to receive incoming MHL vendor command
     */
    public void setHdmiMhlScratchpadCommandListener(HdmiMhlScratchpadCommandListener listener) {
    public void setHdmiMhlVendorCommandListener(HdmiMhlVendorCommandListener listener) {
        if (listener == null) {
            throw new IllegalArgumentException("listener must not be null.");
        }
        try {
            mService.addHdmiMhlScratchpadCommandListener(getListenerWrapper(listener));
            mService.addHdmiMhlVendorCommandListener(getListenerWrapper(listener));
        } catch (RemoteException e) {
            Log.e(TAG, "failed to set hdmi mhl scratchpad command listener: ", e);
            Log.e(TAG, "failed to set hdmi mhl vendor command listener: ", e);
        }
    }

    private IHdmiMhlScratchpadCommandListener getListenerWrapper(
            final HdmiMhlScratchpadCommandListener listener) {
        return new IHdmiMhlScratchpadCommandListener.Stub() {
    private IHdmiMhlVendorCommandListener getListenerWrapper(
            final HdmiMhlVendorCommandListener listener) {
        return new IHdmiMhlVendorCommandListener.Stub() {
            @Override
            public void onReceived(int portId, int offset, int length, byte[] data) {
                listener.onReceived(portId, offset, length, data);
@@ -365,29 +365,29 @@ public final class HdmiTvClient extends HdmiClient {
    }

    /**
     * Send MHL Scratchpad command to the device connected to a port of the given portId.
     * Send MHL vendor command to the device connected to a port of the given portId.
     *
     * @param portId id of port to send MHL Scratchpad command
     * @param portId id of port to send MHL vendor command
     * @param offset offset in the in given data
     * @param length length of data. offset + length should be bound to length of data.
     * @param data container for Scratchpad data. It should be 16 bytes.
     * @param data container for vendor command data. It should be 16 bytes.
     * @throws IllegalArgumentException if the given parameters are invalid
     */
    public void sendScratchpadCommand(int portId, int offset, int length, byte[] data) {
        if (data == null || data.length != SCRATCHPAD_DATA_SIZE) {
            throw new IllegalArgumentException("Invalid scratchpad data.");
    public void sendMhlVendorCommand(int portId, int offset, int length, byte[] data) {
        if (data == null || data.length != VENDOR_DATA_SIZE) {
            throw new IllegalArgumentException("Invalid vendor command data.");
        }
        if (offset < 0 || offset >= SCRATCHPAD_DATA_SIZE) {
        if (offset < 0 || offset >= VENDOR_DATA_SIZE) {
            throw new IllegalArgumentException("Invalid offset:" + offset);
        }
        if (length < 0 || offset + length > SCRATCHPAD_DATA_SIZE) {
        if (length < 0 || offset + length > VENDOR_DATA_SIZE) {
            throw new IllegalArgumentException("Invalid length:" + length);
        }

        try {
            mService.sendScratchpadCommand(portId, offset, length, data);
            mService.sendMhlVendorCommand(portId, offset, length, data);
        } catch (RemoteException e) {
            Log.e(TAG, "failed to send scratchpad command: ", e);
            Log.e(TAG, "failed to send vendor command: ", e);
        }
    }
}
+3 −3
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@ import android.hardware.hdmi.IHdmiControlCallback;
import android.hardware.hdmi.IHdmiDeviceEventListener;
import android.hardware.hdmi.IHdmiHotplugEventListener;
import android.hardware.hdmi.IHdmiInputChangeListener;
import android.hardware.hdmi.IHdmiMhlScratchpadCommandListener;
import android.hardware.hdmi.IHdmiMhlVendorCommandListener;
import android.hardware.hdmi.IHdmiRecordListener;
import android.hardware.hdmi.IHdmiSystemAudioModeChangeListener;
import android.hardware.hdmi.IHdmiVendorCommandListener;
@@ -67,6 +67,6 @@ interface IHdmiControlService {
    void stopOneTouchRecord(int recorderAddress);
    void startTimerRecording(int recorderAddress, int sourceType, in byte[] recordSource);
    void clearTimerRecording(int recorderAddress, int sourceType, in byte[] recordSource);
    void sendScratchpadCommand(int portId, int offset, int length, in byte[] data);
    void addHdmiMhlScratchpadCommandListener(IHdmiMhlScratchpadCommandListener listener);
    void sendMhlVendorCommand(int portId, int offset, int length, in byte[] data);
    void addHdmiMhlVendorCommandListener(IHdmiMhlVendorCommandListener listener);
}
+2 −3
Original line number Diff line number Diff line
@@ -17,11 +17,10 @@
package android.hardware.hdmi;

 /**
 * Callback interface definition for MHL client to get the scratchpad
 * command.
 * Callback interface definition for MHL client to get the vendor command.
 *
 * @hide
 */
 oneway interface IHdmiMhlScratchpadCommandListener {
 oneway interface IHdmiMhlVendorCommandListener {
      void onReceived(int portId, int offset, int length, in byte[] data);
 }
+20 −21
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ import android.hardware.hdmi.IHdmiControlService;
import android.hardware.hdmi.IHdmiDeviceEventListener;
import android.hardware.hdmi.IHdmiHotplugEventListener;
import android.hardware.hdmi.IHdmiInputChangeListener;
import android.hardware.hdmi.IHdmiMhlScratchpadCommandListener;
import android.hardware.hdmi.IHdmiMhlVendorCommandListener;
import android.hardware.hdmi.IHdmiRecordListener;
import android.hardware.hdmi.IHdmiSystemAudioModeChangeListener;
import android.hardware.hdmi.IHdmiVendorCommandListener;
@@ -247,10 +247,10 @@ public final class HdmiControlService extends SystemService {
    @GuardedBy("mLock")
    private boolean mMhlInputChangeEnabled;

    // List of records for MHL Scratchpad command listener to handle the caller killed in action.
    // List of records for MHL Vendor command listener to handle the caller killed in action.
    @GuardedBy("mLock")
    private final ArrayList<HdmiMhlScratchpadCommandListenerRecord>
            mScratchpadCommandListenerRecords = new ArrayList<>();
    private final ArrayList<HdmiMhlVendorCommandListenerRecord>
            mMhlVendorCommandListenerRecords = new ArrayList<>();

    @GuardedBy("mLock")
    private List<HdmiDeviceInfo> mMhlDevices;
@@ -928,16 +928,16 @@ public final class HdmiControlService extends SystemService {
        return mMhlDevices;
    }

    private class HdmiMhlScratchpadCommandListenerRecord implements IBinder.DeathRecipient {
        private final IHdmiMhlScratchpadCommandListener mListener;
    private class HdmiMhlVendorCommandListenerRecord implements IBinder.DeathRecipient {
        private final IHdmiMhlVendorCommandListener mListener;

        public HdmiMhlScratchpadCommandListenerRecord(IHdmiMhlScratchpadCommandListener listener) {
        public HdmiMhlVendorCommandListenerRecord(IHdmiMhlVendorCommandListener listener) {
            mListener = listener;
        }

        @Override
        public void binderDied() {
            mScratchpadCommandListenerRecords.remove(this);
            mMhlVendorCommandListenerRecords.remove(this);
        }
    }

@@ -1403,7 +1403,7 @@ public final class HdmiControlService extends SystemService {
        }

        @Override
        public void sendScratchpadCommand(final int portId, final int offset, final int length,
        public void sendMhlVendorCommand(final int portId, final int offset, final int length,
                final byte[] data) {
            enforceAccessPermission();
            runOnServiceThread(new Runnable() {
@@ -1418,16 +1418,16 @@ public final class HdmiControlService extends SystemService {
                        Slog.w(TAG, "Invalid port id:" + portId);
                        return;
                    }
                    mMhlController.sendScratchpadCommand(portId, offset, length, data);
                    mMhlController.sendVendorCommand(portId, offset, length, data);
                }
            });
        }

        @Override
        public void addHdmiMhlScratchpadCommandListener(
                IHdmiMhlScratchpadCommandListener listener) {
        public void addHdmiMhlVendorCommandListener(
                IHdmiMhlVendorCommandListener listener) {
            enforceAccessPermission();
            HdmiControlService.this.addHdmiMhlScratchpadCommandListener(listener);
            HdmiControlService.this.addHdmiMhlVendorCommandListener(listener);
        }

        @Override
@@ -1880,9 +1880,9 @@ public final class HdmiControlService extends SystemService {
        }
    }

    private void addHdmiMhlScratchpadCommandListener(IHdmiMhlScratchpadCommandListener listener) {
        HdmiMhlScratchpadCommandListenerRecord record =
                new HdmiMhlScratchpadCommandListenerRecord(listener);
    private void addHdmiMhlVendorCommandListener(IHdmiMhlVendorCommandListener listener) {
        HdmiMhlVendorCommandListenerRecord record =
                new HdmiMhlVendorCommandListenerRecord(listener);
        try {
            listener.asBinder().linkToDeath(record, 0);
        } catch (RemoteException e) {
@@ -1891,18 +1891,17 @@ public final class HdmiControlService extends SystemService {
        }

        synchronized (mLock) {
            mScratchpadCommandListenerRecords.add(record);
            mMhlVendorCommandListenerRecords.add(record);
        }
    }

    void invokeScratchpadCommandListeners(int portId, int offest, int length, byte[] data) {
    void invokeMhlVendorCommandListeners(int portId, int offest, int length, byte[] data) {
        synchronized (mLock) {
            for (HdmiMhlScratchpadCommandListenerRecord record :
                    mScratchpadCommandListenerRecords) {
            for (HdmiMhlVendorCommandListenerRecord record : mMhlVendorCommandListenerRecords) {
                try {
                    record.mListener.onReceived(portId, offest, length, data);
                } catch (RemoteException e) {
                    Slog.e(TAG, "Failed to notify scratchpad command", e);
                    Slog.e(TAG, "Failed to notify MHL vendor command", e);
                }
            }
        }
Loading