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

Commit 48b908bd authored by Ahmed ElArabawy's avatar Ahmed ElArabawy
Browse files

Revert "power hal: Use power HAL API 1.1"



This reverts commit 0a4e1148.
The reason of the revert is to check for the application start time
regression that may have been caused by the CL (original CL# 2087376)

Bug: 38317397
Test: None

Change-Id: I4f249ba722791c7238a38e845a5cc2bd2d14a450
Signed-off-by: default avatarAhmed ElArabawy <arabawy@google.com>
parent b44a966c
Loading
Loading
Loading
Loading
+0 −12
Original line number Diff line number Diff line
@@ -1189,7 +1189,6 @@ public abstract class BatteryStats implements Parcelable {

        // Platform-level low power state stats
        public String statPlatformIdleState;
        public String statSubsystemPowerState;

        public HistoryStepDetails() {
            clear();
@@ -1221,7 +1220,6 @@ public abstract class BatteryStats implements Parcelable {
            out.writeInt(statSoftIrqTime);
            out.writeInt(statIdlTime);
            out.writeString(statPlatformIdleState);
            out.writeString(statSubsystemPowerState);
        }

        public void readFromParcel(Parcel in) {
@@ -1243,7 +1241,6 @@ public abstract class BatteryStats implements Parcelable {
            statSoftIrqTime = in.readInt();
            statIdlTime = in.readInt();
            statPlatformIdleState = in.readString();
            statSubsystemPowerState = in.readString();
        }
    }

@@ -5390,10 +5387,6 @@ public abstract class BatteryStats implements Parcelable {
                        pw.print(", PlatformIdleStat ");
                        pw.print(rec.stepDetails.statPlatformIdleState);
                        pw.println();

                        pw.print(", SubsystemPowerState ");
                        pw.print(rec.stepDetails.statSubsystemPowerState);
                        pw.println();
                    } else {
                        pw.print(BATTERY_STATS_CHECKIN_VERSION); pw.print(',');
                        pw.print(HISTORY_DATA); pw.print(",0,Dcpu=");
@@ -5431,11 +5424,6 @@ public abstract class BatteryStats implements Parcelable {
                            pw.print(rec.stepDetails.statPlatformIdleState);
                        }
                        pw.println();

                        if (rec.stepDetails.statSubsystemPowerState != null) {
                            pw.print(rec.stepDetails.statSubsystemPowerState);
                        }
                        pw.println();
                    }
                }
                oldState = rec.states;
+0 −7
Original line number Diff line number Diff line
@@ -169,7 +169,6 @@ public class BatteryStatsImpl extends BatteryStats {

    public interface PlatformIdleStateCallback {
        public String getPlatformLowPowerStats();
        public String getSubsystemLowPowerStats();
    }

    private final PlatformIdleStateCallback mPlatformIdleStateCallback;
@@ -2843,12 +2842,6 @@ public class BatteryStatsImpl extends BatteryStats {
                        mPlatformIdleStateCallback.getPlatformLowPowerStats();
                if (DEBUG) Slog.i(TAG, "WRITE PlatformIdleState:" +
                        mCurHistoryStepDetails.statPlatformIdleState);

                mCurHistoryStepDetails.statSubsystemPowerState =
                        mPlatformIdleStateCallback.getSubsystemLowPowerStats();
                if (DEBUG) Slog.i(TAG, "WRITE SubsystemPowerState:" +
                        mCurHistoryStepDetails.statSubsystemPowerState);

            }
            computeHistoryStepDetails(mCurHistoryStepDetails, mLastHistoryStepDetails);
            if (includeStepDetails != 0) {
+0 −23
Original line number Diff line number Diff line
@@ -183,7 +183,6 @@ public final class BatteryStatsService extends IBatteryStats.Stub
    }

    private native int getPlatformLowPowerStats(ByteBuffer outBuffer);
    private native int getSubsystemLowPowerStats(ByteBuffer outBuffer);
    private CharsetDecoder mDecoderStat = StandardCharsets.UTF_8
                    .newDecoder()
                    .onMalformedInput(CodingErrorAction.REPLACE)
@@ -215,28 +214,6 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        }
    }

    @Override
    public String getSubsystemLowPowerStats() {
        Slog.d(TAG, "begin getSubsystemLowPowerStats");
        try {
            mUtf8BufferStat.clear();
            mUtf16BufferStat.clear();
            mDecoderStat.reset();
            int bytesWritten = getSubsystemLowPowerStats(mUtf8BufferStat);
            if (bytesWritten < 0) {
                return null;
            } else if (bytesWritten == 0) {
                return "Empty";
            }
            mUtf8BufferStat.limit(bytesWritten);
            mDecoderStat.decode(mUtf8BufferStat, mUtf16BufferStat, true);
            mUtf16BufferStat.flip();
            return mUtf16BufferStat.toString();
        } finally {
            Slog.d(TAG, "end getSubsystemLowPowerStats");
        }
    }

    BatteryStatsService(File systemDir, Handler handler) {
        // Our handler here will be accessing the disk, use a different thread than
        // what the ActivityManagerService gave us (no I/O on that one!).
+0 −1
Original line number Diff line number Diff line
@@ -95,7 +95,6 @@ LOCAL_SHARED_LIBRARIES += \
    android.hardware.ir@1.0 \
    android.hardware.light@2.0 \
    android.hardware.power@1.0 \
    android.hardware.power@1.1 \
    android.hardware.tetheroffload.config@1.0 \
    android.hardware.thermal@1.0 \
    android.hardware.tv.cec@1.0 \
+0 −99
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@
#include <unistd.h>

#include <android/hardware/power/1.0/IPower.h>
#include <android/hardware/power/1.1/IPower.h>
#include <android_runtime/AndroidRuntime.h>
#include <jni.h>

@@ -47,8 +46,6 @@ using android::hardware::power::V1_0::IPower;
using android::hardware::power::V1_0::PowerStatePlatformSleepState;
using android::hardware::power::V1_0::PowerStateVoter;
using android::hardware::power::V1_0::Status;
using android::hardware::power::V1_1::PowerStateSubsystem;
using android::hardware::power::V1_1::PowerStateSubsystemSleepState;
using android::hardware::hidl_vec;

namespace android
@@ -266,105 +263,9 @@ static jint getPlatformLowPowerStats(JNIEnv* env, jobject /* clazz */, jobject o
    return total_added;
}

static jint getSubsystemLowPowerStats(JNIEnv* env, jobject /* clazz */, jobject outBuf) {
    char *output = (char*)env->GetDirectBufferAddress(outBuf);
    char *offset = output;
    int remaining = (int)env->GetDirectBufferCapacity(outBuf);
    int total_added = -1;

	//This is a IPower 1.1 API
    sp<android::hardware::power::V1_1::IPower> gPowerHal_1_1 = nullptr;

    if (outBuf == NULL) {
        jniThrowException(env, "java/lang/NullPointerException", "null argument");
        return -1;
    }

    {
        std::lock_guard<std::mutex> lock(gPowerHalMutex);
        if (!getPowerHal()) {
            ALOGE("Power Hal not loaded");
            return -1;
        }

        //Trying to cast to 1.1, this will succeed only for devices supporting 1.1
        gPowerHal_1_1 = android::hardware::power::V1_1::IPower::castFrom(gPowerHal);
    	if (gPowerHal_1_1 == nullptr) {
            //This device does not support IPower@1.1, exiting gracefully
            return 0;
    	}

        Return<void> ret = gPowerHal_1_1->getSubsystemLowPowerStats(
           [&offset, &remaining, &total_added](hidl_vec<PowerStateSubsystem> subsystems,
                Status status) {

            if (status != Status::SUCCESS)
                return;

            for (size_t i = 0; i < subsystems.size(); i++) {
                int added;
                const PowerStateSubsystem &subsystem = subsystems[i];

                added = snprintf(offset, remaining,
                                 "subsystem_%zu name=%s ", i + 1, subsystem.name.c_str());
                if (added < 0) {
                    break;
                }

                if (added > remaining) {
                    added = remaining;
                }

                offset += added;
                remaining -= added;
                total_added += added;

                for (size_t j = 0; j < subsystem.states.size(); j++) {
                    const PowerStateSubsystemSleepState& state = subsystem.states[j];
                    added = snprintf(offset, remaining,
                                     "state_%zu name=%s time=%" PRIu64 " count=%" PRIu64 " last entry TS(ms)=%" PRIu64 " ",
                                     j + 1, state.name.c_str(), state.residencyInMsecSinceBoot,
                                     state.totalTransitions, state.lastEntryTimestampMs);
                    if (added < 0) {
                        break;
                    }

                    if (added > remaining) {
                        added = remaining;
                    }

                    offset += added;
                    remaining -= added;
                    total_added += added;
                }

                if (remaining <= 0) {
                    /* rewrite NULL character*/
                    offset--;
                    total_added--;
                    ALOGE("PowerHal: buffer not enough");
                    break;
                }
            }
        }
        );

        if (!ret.isOk()) {
            ALOGE("getSubsystemLowPowerStats() failed: power HAL service not available");
            gPowerHal = nullptr;
            return -1;
        }
    }

    *offset = 0;
    total_added += 1;
    return total_added;
}

static const JNINativeMethod method_table[] = {
    { "nativeWaitWakeup", "(Ljava/nio/ByteBuffer;)I", (void*)nativeWaitWakeup },
    { "getPlatformLowPowerStats", "(Ljava/nio/ByteBuffer;)I", (void*)getPlatformLowPowerStats },
    { "getSubsystemLowPowerStats", "(Ljava/nio/ByteBuffer;)I", (void*)getSubsystemLowPowerStats },
};

int register_android_server_BatteryStatsService(JNIEnv *env)