diff options
author | Mathias Agopian <mathias@google.com> | 2010-07-19 15:03:55 -0700 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2010-07-19 17:57:29 -0700 |
commit | 6f8b4d28d41508e3a563c12f5841918bb3869819 (patch) | |
tree | 957946df953dc7240103c1bc8603564a1fa246df /services | |
parent | 1bf797857e025e8a71db86fb9e79765a767ec1eb (diff) | |
download | frameworks_base-6f8b4d28d41508e3a563c12f5841918bb3869819.zip frameworks_base-6f8b4d28d41508e3a563c12f5841918bb3869819.tar.gz frameworks_base-6f8b4d28d41508e3a563c12f5841918bb3869819.tar.bz2 |
Added partial support for repporting sensor activity to IBatteryStats
Change-Id: I2af319d89e49b0f2349ec9d8b0fccac80e9bc047
Diffstat (limited to 'services')
-rw-r--r-- | services/sensorservice/SensorService.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp index 5410cbc..0ab4a20 100644 --- a/services/sensorservice/SensorService.cpp +++ b/services/sensorservice/SensorService.cpp @@ -23,8 +23,10 @@ #include <utils/Atomic.h> #include <utils/Errors.h> #include <utils/RefBase.h> +#include <utils/Singleton.h> #include <binder/BinderService.h> +#include <binder/IServiceManager.h> #include <gui/ISensorServer.h> #include <gui/ISensorEventConnection.h> @@ -44,8 +46,37 @@ namespace android { * send something to application when they enable a sensor that is already * active (the issue here is that it can take time before a value is * produced by the h/w if the rate is low or if it's a one-shot sensor). + * - send sensor info to battery service */ +// --------------------------------------------------------------------------- + +class BatteryService : public Singleton<BatteryService> { + friend class Singleton<BatteryService>; + sp<IBinder> mBatteryStatService; + BatteryService() { + const String16 name("batteryinfo"); + //getService(name, &mBatteryStatService); + } +public: + void enableSensor(int handle) { + if (mBatteryStatService != 0) { + int uid = IPCThreadState::self()->getCallingUid(); + //mBatteryStatService->noteStartSensor(uid, handle); + } + } + void disableSensor(int handle) { + if (mBatteryStatService != 0) { + int uid = IPCThreadState::self()->getCallingUid(); + //mBatteryStatService->noteStopSensor(uid, handle); + } + } +}; + +ANDROID_SINGLETON_STATIC_INSTANCE(BatteryService) + +// --------------------------------------------------------------------------- + SensorService::SensorService() : Thread(false), mDump("android.permission.DUMP") @@ -201,6 +232,9 @@ status_t SensorService::enable(const sp<SensorEventConnection>& connection, mActiveSensors.add(handle, rec); err = mSensorDevice->activate(mSensorDevice, handle, 1); LOGE_IF(err, "Error activating sensor %d (%s)", handle, strerror(-err)); + if (err == 0) { + BatteryService::getInstance().enableSensor(handle); + } } else { err = rec->addConnection(connection); } @@ -232,6 +266,9 @@ status_t SensorService::disable(const sp<SensorEventConnection>& connection, mActiveSensors.removeItem(handle); delete rec; err = mSensorDevice->activate(mSensorDevice, handle, 0); + if (err == 0) { + BatteryService::getInstance().disableSensor(handle); + } } } return err; |