diff options
| author | 2024-03-05 15:48:01 -0800 | |
|---|---|---|
| committer | 2024-04-22 18:32:15 +0000 | |
| commit | 4647b011011985d46decd74dcc844e1764aa26ce (patch) | |
| tree | e69db411a949e372dc52bb2ff145008738606fff | |
| parent | 8ff457cd16b393e94fcc28e02cb1343b145d1a52 (diff) | |
Add support to get headroom from thermal cmd
Bug: 328306727
Test: adb shell cmd thermalservice headroom 20
Change-Id: Iab67a4947fcfa7027811c946d8d2d0c0e26fb4a1
(cherry picked from commit 71e4df07760dabdc30e7487b7fa0bdaf3697b8c7)
| -rw-r--r-- | services/core/java/com/android/server/power/ThermalManagerService.java | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/power/ThermalManagerService.java b/services/core/java/com/android/server/power/ThermalManagerService.java index 24d7acd772c1..53607880ff48 100644 --- a/services/core/java/com/android/server/power/ThermalManagerService.java +++ b/services/core/java/com/android/server/power/ThermalManagerService.java @@ -700,6 +700,8 @@ public class ThermalManagerService extends SystemService { return runOverrideStatus(); case "reset": return runReset(); + case "headroom": + return runHeadroom(); default: return handleDefaultCommands(cmd); } @@ -862,6 +864,36 @@ public class ThermalManagerService extends SystemService { } } + private int runHeadroom() { + final long token = Binder.clearCallingIdentity(); + try { + final PrintWriter pw = getOutPrintWriter(); + int forecastSecs; + try { + forecastSecs = Integer.parseInt(getNextArgRequired()); + } catch (RuntimeException ex) { + pw.println("Error: " + ex); + return -1; + } + if (!mHalReady.get()) { + pw.println("Error: thermal HAL is not ready"); + return -1; + } + + if (forecastSecs < MIN_FORECAST_SEC || forecastSecs > MAX_FORECAST_SEC) { + pw.println( + "Error: forecast second input should be in range [" + MIN_FORECAST_SEC + + "," + MAX_FORECAST_SEC + "]"); + return -1; + } + float headroom = mTemperatureWatcher.getForecast(forecastSecs); + pw.println("Headroom in " + forecastSecs + " seconds: " + headroom); + return 0; + } finally { + Binder.restoreCallingIdentity(token); + } + } + @Override public void onHelp() { final PrintWriter pw = getOutPrintWriter(); @@ -877,6 +909,9 @@ public class ThermalManagerService extends SystemService { pw.println(" status code is defined in android.os.Temperature."); pw.println(" reset"); pw.println(" unlocks the thermal status of the device."); + pw.println(" headroom FORECAST_SECONDS"); + pw.println(" gets the thermal headroom forecast in specified seconds, from [" + + MIN_FORECAST_SEC + "," + MAX_FORECAST_SEC + "]."); pw.println(); } } |