summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.bp2
-rw-r--r--core/java/com/android/internal/os/KernelWakelockReader.java13
-rw-r--r--core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java4
-rw-r--r--services/core/jni/Android.bp3
-rw-r--r--services/core/jni/com_android_server_power_PowerManagerService.cpp19
5 files changed, 29 insertions, 12 deletions
diff --git a/Android.bp b/Android.bp
index 8c8b29baf2f1..eb1718efbef6 100644
--- a/Android.bp
+++ b/Android.bp
@@ -447,7 +447,6 @@ java_library {
name: "framework-internal-utils",
static_libs: [
"apex_aidl_interface-java",
- "suspend_control_aidl_interface-java",
"framework-protos",
"updatable-driver-protos",
"android.hidl.base-V1.0-java",
@@ -481,6 +480,7 @@ java_library {
"android.hardware.vibrator-V1.2-java",
"android.hardware.vibrator-V1.3-java",
"android.system.keystore2-java",
+ "android.system.suspend.control.internal-java",
"devicepolicyprotosnano",
"com.android.sysprop.apex",
diff --git a/core/java/com/android/internal/os/KernelWakelockReader.java b/core/java/com/android/internal/os/KernelWakelockReader.java
index 3d35d2fbaa82..f668bbaf9438 100644
--- a/core/java/com/android/internal/os/KernelWakelockReader.java
+++ b/core/java/com/android/internal/os/KernelWakelockReader.java
@@ -21,8 +21,8 @@ import android.os.ServiceManager;
import android.os.ServiceManager.ServiceNotFoundException;
import android.os.StrictMode;
import android.os.SystemClock;
-import android.system.suspend.ISuspendControlService;
-import android.system.suspend.WakeLockInfo;
+import android.system.suspend.internal.ISuspendControlServiceInternal;
+import android.system.suspend.internal.WakeLockInfo;
import android.util.Slog;
import com.android.internal.annotations.VisibleForTesting;
@@ -66,7 +66,7 @@ public class KernelWakelockReader {
private final String[] mProcWakelocksName = new String[3];
private final long[] mProcWakelocksData = new long[3];
- private ISuspendControlService mSuspendControlService = null;
+ private ISuspendControlServiceInternal mSuspendControlService = null;
private byte[] mKernelWakelockBuffer = new byte[32 * 1024];
/**
@@ -155,11 +155,12 @@ public class KernelWakelockReader {
/**
* Attempt to wait for suspend_control service if not immediately available.
*/
- private ISuspendControlService waitForSuspendControlService() throws ServiceNotFoundException {
- final String name = "suspend_control";
+ private ISuspendControlServiceInternal waitForSuspendControlService()
+ throws ServiceNotFoundException {
+ final String name = "suspend_control_internal";
final int numRetries = 5;
for (int i = 0; i < numRetries; i++) {
- mSuspendControlService = ISuspendControlService.Stub.asInterface(
+ mSuspendControlService = ISuspendControlServiceInternal.Stub.asInterface(
ServiceManager.getService(name));
if (mSuspendControlService != null) {
return mSuspendControlService;
diff --git a/core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java b/core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java
index dc9208de7198..7306b45aaa98 100644
--- a/core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java
@@ -16,14 +16,14 @@
package com.android.internal.os;
+import android.system.suspend.internal.WakeLockInfo;
+
import androidx.test.filters.SmallTest;
import junit.framework.TestCase;
import java.nio.charset.Charset;
-import android.system.suspend.WakeLockInfo;
-
public class KernelWakelockReaderTest extends TestCase {
/**
* Helper class that builds the mock Kernel module file /d/wakeup_sources.
diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp
index e8972742f8e2..982cf9f50bba 100644
--- a/services/core/jni/Android.bp
+++ b/services/core/jni/Android.bp
@@ -161,9 +161,10 @@ cc_defaults {
"android.frameworks.schedulerservice@1.0",
"android.frameworks.sensorservice@1.0",
"android.frameworks.stats@1.0",
+ "android.system.suspend.control-cpp",
+ "android.system.suspend.control.internal-cpp",
"android.system.suspend@1.0",
"service.incremental",
- "suspend_control_aidl_interface-cpp",
],
static_libs: [
diff --git a/services/core/jni/com_android_server_power_PowerManagerService.cpp b/services/core/jni/com_android_server_power_PowerManagerService.cpp
index 469838357f30..5fde550dc19d 100644
--- a/services/core/jni/com_android_server_power_PowerManagerService.cpp
+++ b/services/core/jni/com_android_server_power_PowerManagerService.cpp
@@ -24,6 +24,7 @@
#include <android/hardware/power/Mode.h>
#include <android/system/suspend/1.0/ISystemSuspend.h>
#include <android/system/suspend/ISuspendControlService.h>
+#include <android/system/suspend/internal/ISuspendControlServiceInternal.h>
#include <nativehelper/JNIHelp.h>
#include "jni.h"
@@ -355,6 +356,8 @@ void android_server_PowerManagerService_userActivity(nsecs_t eventTime, int32_t
static sp<ISystemSuspend> gSuspendHal = nullptr;
static sp<ISuspendControlService> gSuspendControl = nullptr;
+static sp<system::suspend::internal::ISuspendControlServiceInternal> gSuspendControlInternal =
+ nullptr;
static sp<IWakeLock> gSuspendBlocker = nullptr;
static std::mutex gSuspendMutex;
@@ -379,10 +382,22 @@ sp<ISuspendControlService> getSuspendControl() {
return gSuspendControl;
}
+sp<system::suspend::internal::ISuspendControlServiceInternal> getSuspendControlInternal() {
+ static std::once_flag suspendControlFlag;
+ std::call_once(suspendControlFlag, []() {
+ gSuspendControlInternal =
+ waitForService<system::suspend::internal::ISuspendControlServiceInternal>(
+ String16("suspend_control_internal"));
+ LOG_ALWAYS_FATAL_IF(gSuspendControlInternal == nullptr);
+ });
+ return gSuspendControlInternal;
+}
+
void enableAutoSuspend() {
static bool enabled = false;
if (!enabled) {
- sp<ISuspendControlService> suspendControl = getSuspendControl();
+ sp<system::suspend::internal::ISuspendControlServiceInternal> suspendControl =
+ getSuspendControlInternal();
suspendControl->enableAutosuspend(&enabled);
}
@@ -515,7 +530,7 @@ static void nativeSetFeature(JNIEnv* /* env */, jclass /* clazz */, jint feature
static bool nativeForceSuspend(JNIEnv* /* env */, jclass /* clazz */) {
bool retval = false;
- getSuspendControl()->forceSuspend(&retval);
+ getSuspendControlInternal()->forceSuspend(&retval);
return retval;
}