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

Commit d47e010c authored by Daniel Zheng's avatar Daniel Zheng Committed by Android (Google) Code Review
Browse files

Merge changes from topic "hingeInfo" into main

* changes:
  TIMservice: getHingeInfo
  TIMService: getHingeCount
parents 070d1d27 0dcf5148
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -92,4 +92,19 @@ interface ITradeInMode {
     * ENTER_TRADE_IN_MODE permission is required and ro.debuggable must be 1.
     */
    boolean isTesting();
    /**
     * Get HingeCount on device
     *
     */
    int getHingeCount();
    /**
     * Get foldCount of specific hinge on device
     *
     */
    int getFoldCount(in int hingeId);
    /**
     * Get lifeSpan of specific hinge on device
     *
     */
    int getHingeLifeSpan(in int hingeId);
}
+30 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import android.net.NetworkRequest;
import android.net.Uri;
import android.os.Binder;
import android.os.ITradeInMode;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.os.RemoteException;
import android.provider.Settings;
@@ -247,6 +248,35 @@ public final class TradeInModeService extends SystemService {
            return isForceEnabledForTesting();
        }

        @Override
        @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
        public int getHingeCount() throws RemoteException {
            android.hardware.health.HingeInfo[] info = getHealthService().getHingeInfo();
            return (info == null) ? 0 : info.length;
        }

        @Override
        @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
        public int getFoldCount(int hingeId) throws RemoteException {
            int hingeCount = getHingeCount();
            if (hingeId >= hingeCount) {
                Slog.e(TAG, "Hinge " + hingeId + " is greater than hinge count: " + hingeCount);
                return -1;
            }
            return getHealthService().getHingeInfo()[hingeId].numTimesFolded;
        }

        @Override
        @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
        public int getHingeLifeSpan(int hingeId) throws RemoteException {
            int hingeCount = getHingeCount();
            if (hingeId >= hingeCount) {
                Slog.e(TAG, "Hinge " + hingeId + " is greater than hinge count: " + hingeCount);
                return -1;
            }
            return getHealthService().getHingeInfo()[hingeId].expectedHingeLifespan;
        }

        private void enforceTestingPermissions() {
            mContext.enforceCallingOrSelfPermission("android.permission.ENTER_TRADE_IN_MODE",
                    "Caller must have ENTER_TRADE_IN_MODE permission");