Merge "[CEC Configuration] Add 'tv_send_standby_on_sleep' option" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
e363da1269
@@ -503,6 +503,29 @@ public final class HdmiControlManager {
|
|||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
public @interface TvWakeOnOneTouchPlay {}
|
public @interface TvWakeOnOneTouchPlay {}
|
||||||
|
|
||||||
|
// -- Whether TV should send <Standby> on sleep.
|
||||||
|
/**
|
||||||
|
* Sending <Standby> on sleep.
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public static final int TV_SEND_STANDBY_ON_SLEEP_ENABLED = 1;
|
||||||
|
/**
|
||||||
|
* Not sending <Standby> on sleep.
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public static final int TV_SEND_STANDBY_ON_SLEEP_DISABLED = 0;
|
||||||
|
/**
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@IntDef(prefix = { "TV_SEND_STANDBY_ON_SLEEP_" }, value = {
|
||||||
|
TV_SEND_STANDBY_ON_SLEEP_ENABLED,
|
||||||
|
TV_SEND_STANDBY_ON_SLEEP_DISABLED
|
||||||
|
})
|
||||||
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
|
public @interface TvSendStandbyOnSleep {}
|
||||||
|
|
||||||
// -- The RC profile of a TV panel.
|
// -- The RC profile of a TV panel.
|
||||||
/**
|
/**
|
||||||
* RC profile none.
|
* RC profile none.
|
||||||
@@ -746,6 +769,14 @@ public final class HdmiControlManager {
|
|||||||
*/
|
*/
|
||||||
public static final String CEC_SETTING_NAME_TV_WAKE_ON_ONE_TOUCH_PLAY =
|
public static final String CEC_SETTING_NAME_TV_WAKE_ON_ONE_TOUCH_PLAY =
|
||||||
"tv_wake_on_one_touch_play";
|
"tv_wake_on_one_touch_play";
|
||||||
|
/**
|
||||||
|
* Name of a setting deciding whether the device will also turn off other CEC devices
|
||||||
|
* when it goes to standby mode.
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public static final String CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP =
|
||||||
|
"tv_send_standby_on_sleep";
|
||||||
/**
|
/**
|
||||||
* Name of a setting representing the RC profile of a TV panel.
|
* Name of a setting representing the RC profile of a TV panel.
|
||||||
*
|
*
|
||||||
@@ -805,12 +836,13 @@ public final class HdmiControlManager {
|
|||||||
CEC_SETTING_NAME_SYSTEM_AUDIO_MODE_MUTING,
|
CEC_SETTING_NAME_SYSTEM_AUDIO_MODE_MUTING,
|
||||||
CEC_SETTING_NAME_VOLUME_CONTROL_MODE,
|
CEC_SETTING_NAME_VOLUME_CONTROL_MODE,
|
||||||
CEC_SETTING_NAME_TV_WAKE_ON_ONE_TOUCH_PLAY,
|
CEC_SETTING_NAME_TV_WAKE_ON_ONE_TOUCH_PLAY,
|
||||||
|
CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP,
|
||||||
CEC_SETTING_NAME_RC_PROFILE_TV,
|
CEC_SETTING_NAME_RC_PROFILE_TV,
|
||||||
CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_ROOT_MENU,
|
CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_ROOT_MENU,
|
||||||
CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_SETUP_MENU,
|
CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_SETUP_MENU,
|
||||||
CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_CONTENTS_MENU,
|
CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_CONTENTS_MENU,
|
||||||
CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_TOP_MENU,
|
CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_TOP_MENU,
|
||||||
CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_MEDIA_CONTEXT_SENSITIVE_MENU
|
CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_MEDIA_CONTEXT_SENSITIVE_MENU,
|
||||||
})
|
})
|
||||||
public @interface CecSettingName {}
|
public @interface CecSettingName {}
|
||||||
|
|
||||||
@@ -2158,4 +2190,48 @@ public final class HdmiControlManager {
|
|||||||
throw e.rethrowFromSystemServer();
|
throw e.rethrowFromSystemServer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the current status of TV send <Standby> on Sleep.
|
||||||
|
*
|
||||||
|
* <p>Sets whether the device will also turn off other CEC devices
|
||||||
|
* when it goes to standby mode.
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@RequiresPermission(android.Manifest.permission.HDMI_CEC)
|
||||||
|
public void setTvSendStandbyOnSleep(@NonNull @TvSendStandbyOnSleep int value) {
|
||||||
|
if (mService == null) {
|
||||||
|
Log.e(TAG, "HdmiControlService is not available");
|
||||||
|
throw new RuntimeException("HdmiControlService is not available");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
mService.setCecSettingIntValue(CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP, value);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
throw e.rethrowFromSystemServer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current status of TV send <Standby> on Sleep.
|
||||||
|
*
|
||||||
|
* <p>Reflects whether the device will also turn off other CEC devices
|
||||||
|
* when it goes to standby mode.
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@NonNull
|
||||||
|
@TvSendStandbyOnSleep
|
||||||
|
@RequiresPermission(android.Manifest.permission.HDMI_CEC)
|
||||||
|
public int getTvSendStandbyOnSleep() {
|
||||||
|
if (mService == null) {
|
||||||
|
Log.e(TAG, "HdmiControlService is not available");
|
||||||
|
throw new RuntimeException("HdmiControlService is not available");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return mService.getCecSettingIntValue(CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
throw e.rethrowFromSystemServer();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -303,6 +303,8 @@ public class HdmiCecConfig {
|
|||||||
return STORAGE_SHARED_PREFS;
|
return STORAGE_SHARED_PREFS;
|
||||||
case HdmiControlManager.CEC_SETTING_NAME_TV_WAKE_ON_ONE_TOUCH_PLAY:
|
case HdmiControlManager.CEC_SETTING_NAME_TV_WAKE_ON_ONE_TOUCH_PLAY:
|
||||||
return STORAGE_GLOBAL_SETTINGS;
|
return STORAGE_GLOBAL_SETTINGS;
|
||||||
|
case HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP:
|
||||||
|
return STORAGE_GLOBAL_SETTINGS;
|
||||||
case HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_TV:
|
case HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_TV:
|
||||||
return STORAGE_SHARED_PREFS;
|
return STORAGE_SHARED_PREFS;
|
||||||
case HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_ROOT_MENU:
|
case HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_ROOT_MENU:
|
||||||
@@ -338,6 +340,8 @@ public class HdmiCecConfig {
|
|||||||
return setting.getName();
|
return setting.getName();
|
||||||
case HdmiControlManager.CEC_SETTING_NAME_TV_WAKE_ON_ONE_TOUCH_PLAY:
|
case HdmiControlManager.CEC_SETTING_NAME_TV_WAKE_ON_ONE_TOUCH_PLAY:
|
||||||
return Global.HDMI_CONTROL_AUTO_WAKEUP_ENABLED;
|
return Global.HDMI_CONTROL_AUTO_WAKEUP_ENABLED;
|
||||||
|
case HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP:
|
||||||
|
return Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED;
|
||||||
case HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_TV:
|
case HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_TV:
|
||||||
return setting.getName();
|
return setting.getName();
|
||||||
case HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_ROOT_MENU:
|
case HdmiControlManager.CEC_SETTING_NAME_RC_PROFILE_SOURCE_HANDLES_ROOT_MENU:
|
||||||
|
|||||||
@@ -956,8 +956,6 @@ abstract class HdmiCecLocalDevice {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void setAutoDeviceOff(boolean enabled) {}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a hot-plug event issued.
|
* Called when a hot-plug event issued.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import android.hardware.tv.cec.V1_0.SendMessageResult;
|
|||||||
import android.os.PowerManager;
|
import android.os.PowerManager;
|
||||||
import android.os.PowerManager.WakeLock;
|
import android.os.PowerManager.WakeLock;
|
||||||
import android.os.SystemProperties;
|
import android.os.SystemProperties;
|
||||||
import android.provider.Settings.Global;
|
|
||||||
import android.sysprop.HdmiProperties;
|
import android.sysprop.HdmiProperties;
|
||||||
import android.util.Slog;
|
import android.util.Slog;
|
||||||
|
|
||||||
@@ -56,9 +55,6 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource {
|
|||||||
// Lazily initialized - should call getWakeLock() to get the instance.
|
// Lazily initialized - should call getWakeLock() to get the instance.
|
||||||
private ActiveWakeLock mWakeLock;
|
private ActiveWakeLock mWakeLock;
|
||||||
|
|
||||||
// If true, turn off TV upon standby. False by default.
|
|
||||||
private boolean mAutoTvOff;
|
|
||||||
|
|
||||||
// Determines what action should be taken upon receiving Routing Control messages.
|
// Determines what action should be taken upon receiving Routing Control messages.
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
protected HdmiProperties.playback_device_action_on_routing_control_values
|
protected HdmiProperties.playback_device_action_on_routing_control_values
|
||||||
@@ -68,12 +64,6 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource {
|
|||||||
|
|
||||||
HdmiCecLocalDevicePlayback(HdmiControlService service) {
|
HdmiCecLocalDevicePlayback(HdmiControlService service) {
|
||||||
super(service, HdmiDeviceInfo.DEVICE_PLAYBACK);
|
super(service, HdmiDeviceInfo.DEVICE_PLAYBACK);
|
||||||
|
|
||||||
mAutoTvOff = mService.readBooleanSetting(Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED, false);
|
|
||||||
|
|
||||||
// The option is false by default. Update settings db as well to have the right
|
|
||||||
// initial setting on UI.
|
|
||||||
mService.writeBooleanSetting(Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED, mAutoTvOff);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -154,7 +144,10 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource {
|
|||||||
// Invalidate the internal active source record when goes to standby
|
// Invalidate the internal active source record when goes to standby
|
||||||
mService.setActiveSource(Constants.ADDR_INVALID, Constants.INVALID_PHYSICAL_ADDRESS,
|
mService.setActiveSource(Constants.ADDR_INVALID, Constants.INVALID_PHYSICAL_ADDRESS,
|
||||||
"HdmiCecLocalDevicePlayback#onStandby()");
|
"HdmiCecLocalDevicePlayback#onStandby()");
|
||||||
if (initiatedByCec || !mAutoTvOff || !wasActiveSource) {
|
boolean mTvSendStandbyOnSleep = mService.getHdmiCecConfig().getIntValue(
|
||||||
|
HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP)
|
||||||
|
== HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED;
|
||||||
|
if (initiatedByCec || !mTvSendStandbyOnSleep || !wasActiveSource) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
switch (standbyAction) {
|
switch (standbyAction) {
|
||||||
@@ -200,13 +193,6 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
@ServiceThreadOnly
|
|
||||||
void setAutoDeviceOff(boolean enabled) {
|
|
||||||
assertRunOnServiceThread();
|
|
||||||
mAutoTvOff = enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CallSuper
|
@CallSuper
|
||||||
@ServiceThreadOnly
|
@ServiceThreadOnly
|
||||||
@@ -425,7 +411,6 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource {
|
|||||||
protected void dump(final IndentingPrintWriter pw) {
|
protected void dump(final IndentingPrintWriter pw) {
|
||||||
super.dump(pw);
|
super.dump(pw);
|
||||||
pw.println("isActiveSource(): " + isActiveSource());
|
pw.println("isActiveSource(): " + isActiveSource());
|
||||||
pw.println("mAutoTvOff:" + mAutoTvOff);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wrapper interface over PowerManager.WakeLock
|
// Wrapper interface over PowerManager.WakeLock
|
||||||
|
|||||||
@@ -89,9 +89,6 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
|
|||||||
@GuardedBy("mLock")
|
@GuardedBy("mLock")
|
||||||
private boolean mSystemAudioMute = false;
|
private boolean mSystemAudioMute = false;
|
||||||
|
|
||||||
// If true, TV going to standby mode puts other devices also to standby.
|
|
||||||
private boolean mAutoDeviceOff;
|
|
||||||
|
|
||||||
private final HdmiCecStandbyModeHandler mStandbyHandler;
|
private final HdmiCecStandbyModeHandler mStandbyHandler;
|
||||||
|
|
||||||
// If true, do not do routing control/send active source for internal source.
|
// If true, do not do routing control/send active source for internal source.
|
||||||
@@ -156,8 +153,6 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
|
|||||||
HdmiCecLocalDeviceTv(HdmiControlService service) {
|
HdmiCecLocalDeviceTv(HdmiControlService service) {
|
||||||
super(service, HdmiDeviceInfo.DEVICE_TV);
|
super(service, HdmiDeviceInfo.DEVICE_TV);
|
||||||
mPrevPortId = Constants.INVALID_PORT_ID;
|
mPrevPortId = Constants.INVALID_PORT_ID;
|
||||||
mAutoDeviceOff = mService.readBooleanSetting(Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED,
|
|
||||||
true);
|
|
||||||
mSystemAudioControlFeatureEnabled =
|
mSystemAudioControlFeatureEnabled =
|
||||||
mService.readBooleanSetting(Global.HDMI_SYSTEM_AUDIO_CONTROL_ENABLED, true);
|
mService.readBooleanSetting(Global.HDMI_SYSTEM_AUDIO_CONTROL_ENABLED, true);
|
||||||
mStandbyHandler = new HdmiCecStandbyModeHandler(service, this);
|
mStandbyHandler = new HdmiCecStandbyModeHandler(service, this);
|
||||||
@@ -1202,13 +1197,6 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
@ServiceThreadOnly
|
|
||||||
void setAutoDeviceOff(boolean enabled) {
|
|
||||||
assertRunOnServiceThread();
|
|
||||||
mAutoDeviceOff = enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ServiceThreadOnly
|
@ServiceThreadOnly
|
||||||
boolean getAutoWakeup() {
|
boolean getAutoWakeup() {
|
||||||
assertRunOnServiceThread();
|
assertRunOnServiceThread();
|
||||||
@@ -1286,7 +1274,11 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
|
|||||||
if (!mService.isControlEnabled()) {
|
if (!mService.isControlEnabled()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!initiatedByCec && mAutoDeviceOff) {
|
boolean sendStandbyOnSleep =
|
||||||
|
mService.getHdmiCecConfig().getIntValue(
|
||||||
|
HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP)
|
||||||
|
== HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED;
|
||||||
|
if (!initiatedByCec && sendStandbyOnSleep) {
|
||||||
mService.sendCecCommand(HdmiCecMessageBuilder.buildStandby(
|
mService.sendCecCommand(HdmiCecMessageBuilder.buildStandby(
|
||||||
mAddress, Constants.ADDR_BROADCAST));
|
mAddress, Constants.ADDR_BROADCAST));
|
||||||
}
|
}
|
||||||
@@ -1545,7 +1537,6 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
|
|||||||
pw.println("mArcFeatureEnabled: " + mArcFeatureEnabled);
|
pw.println("mArcFeatureEnabled: " + mArcFeatureEnabled);
|
||||||
pw.println("mSystemAudioMute: " + mSystemAudioMute);
|
pw.println("mSystemAudioMute: " + mSystemAudioMute);
|
||||||
pw.println("mSystemAudioControlFeatureEnabled: " + mSystemAudioControlFeatureEnabled);
|
pw.println("mSystemAudioControlFeatureEnabled: " + mSystemAudioControlFeatureEnabled);
|
||||||
pw.println("mAutoDeviceOff: " + mAutoDeviceOff);
|
|
||||||
pw.println("mSkipRoutingControl: " + mSkipRoutingControl);
|
pw.println("mSkipRoutingControl: " + mSkipRoutingControl);
|
||||||
pw.println("mPrevPortId: " + mPrevPortId);
|
pw.println("mPrevPortId: " + mPrevPortId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -661,7 +661,6 @@ public class HdmiControlService extends SystemService {
|
|||||||
ContentResolver resolver = getContext().getContentResolver();
|
ContentResolver resolver = getContext().getContentResolver();
|
||||||
String[] settings = new String[] {
|
String[] settings = new String[] {
|
||||||
Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED,
|
Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED,
|
||||||
Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED,
|
|
||||||
Global.HDMI_SYSTEM_AUDIO_CONTROL_ENABLED,
|
Global.HDMI_SYSTEM_AUDIO_CONTROL_ENABLED,
|
||||||
Global.MHL_INPUT_SWITCHING_ENABLED,
|
Global.MHL_INPUT_SWITCHING_ENABLED,
|
||||||
Global.MHL_POWER_CHARGE_ENABLED,
|
Global.MHL_POWER_CHARGE_ENABLED,
|
||||||
@@ -689,15 +688,6 @@ public class HdmiControlService extends SystemService {
|
|||||||
setHdmiCecVolumeControlEnabledInternal(getHdmiCecConfig().getIntValue(
|
setHdmiCecVolumeControlEnabledInternal(getHdmiCecConfig().getIntValue(
|
||||||
HdmiControlManager.CEC_SETTING_NAME_VOLUME_CONTROL_MODE));
|
HdmiControlManager.CEC_SETTING_NAME_VOLUME_CONTROL_MODE));
|
||||||
break;
|
break;
|
||||||
case Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED:
|
|
||||||
for (int type : mLocalDevices) {
|
|
||||||
HdmiCecLocalDevice localDevice = mHdmiCecNetwork.getLocalDevice(type);
|
|
||||||
if (localDevice != null) {
|
|
||||||
localDevice.setAutoDeviceOff(enabled);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// No need to propagate to HAL.
|
|
||||||
break;
|
|
||||||
case Global.HDMI_SYSTEM_AUDIO_CONTROL_ENABLED:
|
case Global.HDMI_SYSTEM_AUDIO_CONTROL_ENABLED:
|
||||||
if (isTvDeviceEnabled()) {
|
if (isTvDeviceEnabled()) {
|
||||||
tv().setSystemAudioControlFeatureEnabled(enabled);
|
tv().setSystemAudioControlFeatureEnabled(enabled);
|
||||||
|
|||||||
@@ -64,6 +64,15 @@
|
|||||||
</allowed-values>
|
</allowed-values>
|
||||||
<default-value int-value="1" />
|
<default-value int-value="1" />
|
||||||
</setting>
|
</setting>
|
||||||
|
<setting name="tv_send_standby_on_sleep"
|
||||||
|
value-type="int"
|
||||||
|
user-configurable="true">
|
||||||
|
<allowed-values>
|
||||||
|
<value int-value="0" />
|
||||||
|
<value int-value="1" />
|
||||||
|
</allowed-values>
|
||||||
|
<default-value int-value="1" />
|
||||||
|
</setting>
|
||||||
<setting name="rc_profile_tv"
|
<setting name="rc_profile_tv"
|
||||||
value-type="int"
|
value-type="int"
|
||||||
user-configurable="false">
|
user-configurable="false">
|
||||||
|
|||||||
@@ -113,6 +113,15 @@ final class FakeHdmiCecConfig extends HdmiCecConfig {
|
|||||||
+ " </allowed-values>"
|
+ " </allowed-values>"
|
||||||
+ " <default-value int-value=\"1\" />"
|
+ " <default-value int-value=\"1\" />"
|
||||||
+ " </setting>"
|
+ " </setting>"
|
||||||
|
+ " <setting name=\"tv_send_standby_on_sleep\""
|
||||||
|
+ " value-type=\"int\""
|
||||||
|
+ " user-configurable=\"true\">"
|
||||||
|
+ " <allowed-values>"
|
||||||
|
+ " <value int-value=\"0\" />"
|
||||||
|
+ " <value int-value=\"1\" />"
|
||||||
|
+ " </allowed-values>"
|
||||||
|
+ " <default-value int-value=\"1\" />"
|
||||||
|
+ " </setting>"
|
||||||
+ " <setting name=\"rc_profile_tv\""
|
+ " <setting name=\"rc_profile_tv\""
|
||||||
+ " value-type=\"int\""
|
+ " value-type=\"int\""
|
||||||
+ " user-configurable=\"false\">"
|
+ " user-configurable=\"false\">"
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ import android.os.Looper;
|
|||||||
import android.os.PowerManager;
|
import android.os.PowerManager;
|
||||||
import android.os.test.TestLooper;
|
import android.os.test.TestLooper;
|
||||||
import android.platform.test.annotations.Presubmit;
|
import android.platform.test.annotations.Presubmit;
|
||||||
import android.provider.Settings.Global;
|
|
||||||
import android.sysprop.HdmiProperties;
|
import android.sysprop.HdmiProperties;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
|
|
||||||
@@ -133,7 +132,6 @@ public class HdmiCecLocalDevicePlaybackTest {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
mHdmiControlService.writeBooleanSetting(Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED, true);
|
|
||||||
mHdmiCecLocalDevicePlayback = new HdmiCecLocalDevicePlayback(mHdmiControlService);
|
mHdmiCecLocalDevicePlayback = new HdmiCecLocalDevicePlayback(mHdmiControlService);
|
||||||
mHdmiCecLocalDevicePlayback.init();
|
mHdmiCecLocalDevicePlayback.init();
|
||||||
mHdmiControlService.setIoLooper(mMyLooper);
|
mHdmiControlService.setIoLooper(mMyLooper);
|
||||||
@@ -560,7 +558,9 @@ public class HdmiCecLocalDevicePlaybackTest {
|
|||||||
HdmiControlManager.POWER_CONTROL_MODE_TV);
|
HdmiControlManager.POWER_CONTROL_MODE_TV);
|
||||||
mHdmiCecLocalDevicePlayback.setActiveSource(ADDR_TV, 0x0000,
|
mHdmiCecLocalDevicePlayback.setActiveSource(ADDR_TV, 0x0000,
|
||||||
"HdmiCecLocalDevicePlaybackTest");
|
"HdmiCecLocalDevicePlaybackTest");
|
||||||
mHdmiCecLocalDevicePlayback.setAutoDeviceOff(true);
|
mHdmiCecLocalDevicePlayback.mService.getHdmiCecConfig().setIntValue(
|
||||||
|
HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP,
|
||||||
|
HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED);
|
||||||
mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF);
|
mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF);
|
||||||
mTestLooper.dispatchAll();
|
mTestLooper.dispatchAll();
|
||||||
|
|
||||||
@@ -580,7 +580,9 @@ public class HdmiCecLocalDevicePlaybackTest {
|
|||||||
HdmiControlManager.POWER_CONTROL_MODE_BROADCAST);
|
HdmiControlManager.POWER_CONTROL_MODE_BROADCAST);
|
||||||
mHdmiCecLocalDevicePlayback.setActiveSource(ADDR_TV, 0x0000,
|
mHdmiCecLocalDevicePlayback.setActiveSource(ADDR_TV, 0x0000,
|
||||||
"HdmiCecLocalDevicePlaybackTest");
|
"HdmiCecLocalDevicePlaybackTest");
|
||||||
mHdmiCecLocalDevicePlayback.setAutoDeviceOff(true);
|
mHdmiCecLocalDevicePlayback.mService.getHdmiCecConfig().setIntValue(
|
||||||
|
HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP,
|
||||||
|
HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED);
|
||||||
mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF);
|
mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF);
|
||||||
mTestLooper.dispatchAll();
|
mTestLooper.dispatchAll();
|
||||||
|
|
||||||
@@ -600,7 +602,9 @@ public class HdmiCecLocalDevicePlaybackTest {
|
|||||||
HdmiControlManager.POWER_CONTROL_MODE_NONE);
|
HdmiControlManager.POWER_CONTROL_MODE_NONE);
|
||||||
mHdmiCecLocalDevicePlayback.setActiveSource(ADDR_TV, 0x0000,
|
mHdmiCecLocalDevicePlayback.setActiveSource(ADDR_TV, 0x0000,
|
||||||
"HdmiCecLocalDevicePlaybackTest");
|
"HdmiCecLocalDevicePlaybackTest");
|
||||||
mHdmiCecLocalDevicePlayback.setAutoDeviceOff(true);
|
mHdmiCecLocalDevicePlayback.mService.getHdmiCecConfig().setIntValue(
|
||||||
|
HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP,
|
||||||
|
HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED);
|
||||||
mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF);
|
mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF);
|
||||||
mTestLooper.dispatchAll();
|
mTestLooper.dispatchAll();
|
||||||
|
|
||||||
@@ -620,7 +624,9 @@ public class HdmiCecLocalDevicePlaybackTest {
|
|||||||
HdmiControlManager.POWER_CONTROL_MODE_TV);
|
HdmiControlManager.POWER_CONTROL_MODE_TV);
|
||||||
mHdmiCecLocalDevicePlayback.setActiveSource(mPlaybackLogicalAddress,
|
mHdmiCecLocalDevicePlayback.setActiveSource(mPlaybackLogicalAddress,
|
||||||
mPlaybackPhysicalAddress, "HdmiCecLocalDevicePlaybackTest");
|
mPlaybackPhysicalAddress, "HdmiCecLocalDevicePlaybackTest");
|
||||||
mHdmiCecLocalDevicePlayback.setAutoDeviceOff(true);
|
mHdmiCecLocalDevicePlayback.mService.getHdmiCecConfig().setIntValue(
|
||||||
|
HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP,
|
||||||
|
HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED);
|
||||||
mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF);
|
mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF);
|
||||||
mTestLooper.dispatchAll();
|
mTestLooper.dispatchAll();
|
||||||
|
|
||||||
@@ -640,7 +646,9 @@ public class HdmiCecLocalDevicePlaybackTest {
|
|||||||
HdmiControlManager.POWER_CONTROL_MODE_BROADCAST);
|
HdmiControlManager.POWER_CONTROL_MODE_BROADCAST);
|
||||||
mHdmiCecLocalDevicePlayback.setActiveSource(mPlaybackLogicalAddress,
|
mHdmiCecLocalDevicePlayback.setActiveSource(mPlaybackLogicalAddress,
|
||||||
mPlaybackPhysicalAddress, "HdmiCecLocalDevicePlaybackTest");
|
mPlaybackPhysicalAddress, "HdmiCecLocalDevicePlaybackTest");
|
||||||
mHdmiCecLocalDevicePlayback.setAutoDeviceOff(true);
|
mHdmiCecLocalDevicePlayback.mService.getHdmiCecConfig().setIntValue(
|
||||||
|
HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP,
|
||||||
|
HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED);
|
||||||
mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF);
|
mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF);
|
||||||
mTestLooper.dispatchAll();
|
mTestLooper.dispatchAll();
|
||||||
|
|
||||||
@@ -660,7 +668,9 @@ public class HdmiCecLocalDevicePlaybackTest {
|
|||||||
HdmiControlManager.POWER_CONTROL_MODE_NONE);
|
HdmiControlManager.POWER_CONTROL_MODE_NONE);
|
||||||
mHdmiCecLocalDevicePlayback.setActiveSource(mPlaybackLogicalAddress,
|
mHdmiCecLocalDevicePlayback.setActiveSource(mPlaybackLogicalAddress,
|
||||||
mPlaybackPhysicalAddress, "HdmiCecLocalDevicePlaybackTest");
|
mPlaybackPhysicalAddress, "HdmiCecLocalDevicePlaybackTest");
|
||||||
mHdmiCecLocalDevicePlayback.setAutoDeviceOff(true);
|
mHdmiCecLocalDevicePlayback.mService.getHdmiCecConfig().setIntValue(
|
||||||
|
HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP,
|
||||||
|
HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED);
|
||||||
mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF);
|
mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF);
|
||||||
mTestLooper.dispatchAll();
|
mTestLooper.dispatchAll();
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.android.server.hdmi;
|
package com.android.server.hdmi;
|
||||||
|
|
||||||
|
import static com.android.server.hdmi.Constants.ADDR_BROADCAST;
|
||||||
import static com.android.server.hdmi.Constants.ADDR_PLAYBACK_1;
|
import static com.android.server.hdmi.Constants.ADDR_PLAYBACK_1;
|
||||||
import static com.android.server.hdmi.Constants.ADDR_TV;
|
import static com.android.server.hdmi.Constants.ADDR_TV;
|
||||||
import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC;
|
import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC;
|
||||||
@@ -268,6 +269,30 @@ public class HdmiCecLocalDeviceTvTest {
|
|||||||
assertThat(mWokenUp).isFalse();
|
assertThat(mWokenUp).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void tvSendStandbyOnSleep_Enabled() {
|
||||||
|
mHdmiCecLocalDeviceTv.mService.getHdmiCecConfig().setIntValue(
|
||||||
|
HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP,
|
||||||
|
HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED);
|
||||||
|
mTestLooper.dispatchAll();
|
||||||
|
mHdmiControlService.onStandby(HdmiControlService.STANDBY_SCREEN_OFF);
|
||||||
|
mTestLooper.dispatchAll();
|
||||||
|
HdmiCecMessage standby = HdmiCecMessageBuilder.buildStandby(ADDR_TV, ADDR_BROADCAST);
|
||||||
|
assertThat(mNativeWrapper.getResultMessages()).contains(standby);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void tvSendStandbyOnSleep_Disabled() {
|
||||||
|
mHdmiCecLocalDeviceTv.mService.getHdmiCecConfig().setIntValue(
|
||||||
|
HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP,
|
||||||
|
HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_DISABLED);
|
||||||
|
mTestLooper.dispatchAll();
|
||||||
|
mHdmiControlService.onStandby(HdmiControlService.STANDBY_SCREEN_OFF);
|
||||||
|
mTestLooper.dispatchAll();
|
||||||
|
HdmiCecMessage standby = HdmiCecMessageBuilder.buildStandby(ADDR_TV, ADDR_BROADCAST);
|
||||||
|
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(standby);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getRcFeatures() {
|
public void getRcFeatures() {
|
||||||
ArrayList<Integer> features = new ArrayList<>(mHdmiCecLocalDeviceTv.getRcFeatures());
|
ArrayList<Integer> features = new ArrayList<>(mHdmiCecLocalDeviceTv.getRcFeatures());
|
||||||
|
|||||||
Reference in New Issue
Block a user