Merge "Revert "power hal: Use power HAL API 1.1""
This commit is contained in:
committed by
Android (Google) Code Review
commit
d78a02b1de
@@ -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;
|
||||
|
||||
@@ -169,7 +169,6 @@ public class BatteryStatsImpl extends BatteryStats {
|
||||
|
||||
public interface PlatformIdleStateCallback {
|
||||
public String getPlatformLowPowerStats();
|
||||
public String getSubsystemLowPowerStats();
|
||||
}
|
||||
|
||||
private final PlatformIdleStateCallback mPlatformIdleStateCallback;
|
||||
@@ -2883,12 +2882,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) {
|
||||
|
||||
@@ -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!).
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user