nx: dockservice: Include setpowermode impl

Change-Id: I66b0eb7f9baad8a8cfe72139810882c470235134
This commit is contained in:
tmakin authored and Nolen Johnson committed 2024-04-17 19:37:02 -04:00
1 parent 70f2992638
commit e29c0e6f0b
2 files changed
+54 -18

No files matched your search

@@ -17,6 +17,8 @@
package org.lineageos.settings.device;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.RemoteException;
import android.provider.Settings;
@@ -29,6 +31,9 @@ import java.nio.charset.StandardCharsets;
import java.text.DecimalFormat;
import java.util.HashMap;
import com.nvidia.NvCPLSvc.INvCPLRemoteService;
import com.nvidia.framework.NvConstants;
import vendor.nvidia.hardware.graphics.display.V1_0.HwcSvcDisplay;
import vendor.nvidia.hardware.graphics.display.V1_0.HwcSvcDisplayMode;
import vendor.nvidia.hardware.graphics.display.V1_0.HwcSvcDisplayModePixEnc;
@@ -219,4 +224,20 @@ public class DisplayUtils {
Log.w(TAG, "Failed to update fan profile");
}
}
public static void setPowerMode(INvCPLRemoteService service, int index) throws RemoteException {
Log.i(TAG, "Setting power mode: " + String.valueOf(index));
if(service == null) {
Log.e(TAG, "setPowerMode called on null INvCPLRemoteService");
return;
}
Intent intent = new Intent();
intent.setClassName(NvConstants.NvCPLSvc, NvConstants.NvCPLService);
intent.putExtra(NvConstants.NvOrigin, 1);
intent.putExtra(NvConstants.NvPowerMode , String.valueOf(index));
service.handleIntent(intent);
}
}
@@ -30,6 +30,7 @@ import android.view.IWindowManager;
import android.view.WindowManagerPolicyConstants;
import com.nvidia.NvAppProfiles;
import com.nvidia.NvCPLSvc.INvCPLRemoteService;
import vendor.nvidia.hardware.graphics.display.V1_0.INvDisplay;
@@ -44,9 +45,9 @@ public class DockService extends Service {
private static final int MODE_MODIN_FRIG_DOCKED_PERF = 5;
final private Receiver mReceiver = new Receiver();
final private NvAppProfiles mAppProfiles = new NvAppProfiles(this);
private INvDisplay mDisplayService;
private IWindowManager mWindowManager;
private INvCPLRemoteService mNvCPLSvc = null;
@Override
public IBinder onBind(Intent intent) {
@@ -80,26 +81,40 @@ public class DockService extends Service {
final boolean perfMode = sharedPrefs.getBoolean("perf_mode", false);
final String sku = SystemProperties.get("ro.boot.hardware.sku", "");
if (perfMode) {
if (connected) {
DisplayUtils.setFanProfile("Cool");
mAppProfiles.setPowerMode(sku.equals("odin")
? MODE_ODIN_DOCKED_PERF
: MODE_MODIN_FRIG_DOCKED_PERF);
} else {
DisplayUtils.setFanProfile("Console");
mAppProfiles.setPowerMode((sku.equals("odin") || sku.equals("vali"))
? MODE_ODIN_VALI_UNDOCKED_PERF
: MODE_MODIN_FRIG_UNDOCKED_PERF);
if (mNvCPLSvc == null) {
try {
mNvCPLSvc = INvCPLRemoteService.Stub.asInterface(
ServiceManager.getService("nvcpl"));
} catch (Exception e) {
Log.e(TAG, "Failed to bind to service. " + e.getMessage());
return;
}
} else {
if (connected) {
DisplayUtils.setFanProfile("Console");
mAppProfiles.setPowerMode(MODE_DOCKED);
}
try {
if (perfMode) {
if (connected) {
DisplayUtils.setFanProfile("Cool");
DisplayUtils.setPowerMode(mNvCPLSvc, sku.equals("odin")
? MODE_ODIN_DOCKED_PERF
: MODE_MODIN_FRIG_DOCKED_PERF);
} else {
DisplayUtils.setFanProfile("Console");
DisplayUtils.setPowerMode(mNvCPLSvc, (sku.equals("odin") || sku.equals("vali"))
? MODE_ODIN_VALI_UNDOCKED_PERF
: MODE_MODIN_FRIG_UNDOCKED_PERF);
}
} else {
DisplayUtils.setFanProfile("Handheld");
mAppProfiles.setPowerMode(MODE_UNDOCKED);
if (connected) {
DisplayUtils.setFanProfile("Console");
DisplayUtils.setPowerMode(mNvCPLSvc, MODE_DOCKED);
} else {
DisplayUtils.setFanProfile("Handheld");
DisplayUtils.setPowerMode(mNvCPLSvc, MODE_UNDOCKED);
}
}
} catch (RemoteException e) {
Log.e(TAG, "Failed to set power profiles");
}
}