Skip to content

Commit

Permalink
Add more methods to IPowerManager.
Browse files Browse the repository at this point in the history
Add the full list of transaction IDs from IPowerManager.aidl
to IPowerManager.h and make BpPowerManager support calling
goToSleep, reboot, shutdown, and crash. These are currently
needed by or likely to be needed by Brillo.

Bug: 22122485
Change-Id: I19abd3587c9d53b28ec150210e07f97517ee4ff4
  • Loading branch information
Daniel Erat committed Sep 30, 2015
1 parent 28b1d67 commit 3f50a39
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 6 deletions.
27 changes: 21 additions & 6 deletions include/powermanager/IPowerManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,23 @@ class IPowerManager : public IInterface
// These transaction IDs must be kept in sync with the method order from
// IPowerManager.aidl.
enum {
ACQUIRE_WAKE_LOCK = IBinder::FIRST_CALL_TRANSACTION,
ACQUIRE_WAKE_LOCK_UID = IBinder::FIRST_CALL_TRANSACTION + 1,
RELEASE_WAKE_LOCK = IBinder::FIRST_CALL_TRANSACTION + 2,
UPDATE_WAKE_LOCK_UIDS = IBinder::FIRST_CALL_TRANSACTION + 3,
POWER_HINT = IBinder::FIRST_CALL_TRANSACTION + 4,
ACQUIRE_WAKE_LOCK = IBinder::FIRST_CALL_TRANSACTION,
ACQUIRE_WAKE_LOCK_UID = IBinder::FIRST_CALL_TRANSACTION + 1,
RELEASE_WAKE_LOCK = IBinder::FIRST_CALL_TRANSACTION + 2,
UPDATE_WAKE_LOCK_UIDS = IBinder::FIRST_CALL_TRANSACTION + 3,
POWER_HINT = IBinder::FIRST_CALL_TRANSACTION + 4,
UPDATE_WAKE_LOCK_SOURCE = IBinder::FIRST_CALL_TRANSACTION + 5,
IS_WAKE_LOCK_LEVEL_SUPPORTED = IBinder::FIRST_CALL_TRANSACTION + 6,
USER_ACTIVITY = IBinder::FIRST_CALL_TRANSACTION + 7,
WAKE_UP = IBinder::FIRST_CALL_TRANSACTION + 8,
GO_TO_SLEEP = IBinder::FIRST_CALL_TRANSACTION + 9,
NAP = IBinder::FIRST_CALL_TRANSACTION + 10,
IS_INTERACTIVE = IBinder::FIRST_CALL_TRANSACTION + 11,
IS_POWER_SAVE_MODE = IBinder::FIRST_CALL_TRANSACTION + 12,
SET_POWER_SAVE_MODE = IBinder::FIRST_CALL_TRANSACTION + 13,
REBOOT = IBinder::FIRST_CALL_TRANSACTION + 14,
SHUTDOWN = IBinder::FIRST_CALL_TRANSACTION + 15,
CRASH = IBinder::FIRST_CALL_TRANSACTION + 16,
};

DECLARE_META_INTERFACE(PowerManager);
Expand All @@ -50,8 +62,11 @@ class IPowerManager : public IInterface
virtual status_t releaseWakeLock(const sp<IBinder>& lock, int flags, bool isOneWay = false) = 0;
virtual status_t updateWakeLockUids(const sp<IBinder>& lock, int len, const int *uids,
bool isOneWay = false) = 0;
// oneway in the .aidl
virtual status_t powerHint(int hintId, int data) = 0;
virtual status_t goToSleep(int64_t event_time_ms, int reason, int flags) = 0;
virtual status_t reboot(bool confirm, const String16& reason, bool wait) = 0;
virtual status_t shutdown(bool confirm, const String16& reason, bool wait) = 0;
virtual status_t crash(const String16& message) = 0;
};

// ----------------------------------------------------------------------------
Expand Down
38 changes: 38 additions & 0 deletions services/powermanager/IPowerManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,44 @@ class BpPowerManager : public BpInterface<IPowerManager>
// This FLAG_ONEWAY is in the .aidl, so there is no way to disable it
return remote()->transact(POWER_HINT, data, &reply, IBinder::FLAG_ONEWAY);
}

virtual status_t goToSleep(int64_t event_time_ms, int reason, int flags)
{
Parcel data, reply;
data.writeInterfaceToken(IPowerManager::getInterfaceDescriptor());
data.writeInt64(event_time_ms);
data.writeInt32(reason);
data.writeInt32(flags);
return remote()->transact(GO_TO_SLEEP, data, &reply, 0);
}

virtual status_t reboot(bool confirm, const String16& reason, bool wait)
{
Parcel data, reply;
data.writeInterfaceToken(IPowerManager::getInterfaceDescriptor());
data.writeInt32(confirm);
data.writeString16(reason);
data.writeInt32(wait);
return remote()->transact(REBOOT, data, &reply, 0);
}

virtual status_t shutdown(bool confirm, const String16& reason, bool wait)
{
Parcel data, reply;
data.writeInterfaceToken(IPowerManager::getInterfaceDescriptor());
data.writeInt32(confirm);
data.writeString16(reason);
data.writeInt32(wait);
return remote()->transact(SHUTDOWN, data, &reply, 0);
}

virtual status_t crash(const String16& message)
{
Parcel data, reply;
data.writeInterfaceToken(IPowerManager::getInterfaceDescriptor());
data.writeString16(message);
return remote()->transact(CRASH, data, &reply, 0);
}
};

IMPLEMENT_META_INTERFACE(PowerManager, "android.os.IPowerManager");
Expand Down

0 comments on commit 3f50a39

Please sign in to comment.