Merge "Revert "power hal: Use power HAL API 1.1""

This commit is contained in:
Ahmed ElArabawy
2017-05-18 23:57:18 +00:00
committed by Android (Google) Code Review
5 changed files with 0 additions and 142 deletions

View File

@@ -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;

View File

@@ -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) {

View File

@@ -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!).

View File

@@ -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 \

View File

@@ -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)