am 865991b0: Merge "Added partial support for repporting sensor activity to IBatteryStats" into gingerbread
Merge commit '865991b075de1df8144426b5c2b2f341e4e33d33' into gingerbread-plus-aosp * commit '865991b075de1df8144426b5c2b2f341e4e33d33': Added partial support for repporting sensor activity to IBatteryStats
This commit is contained in:
@@ -23,8 +23,10 @@
|
|||||||
#include <utils/Atomic.h>
|
#include <utils/Atomic.h>
|
||||||
#include <utils/Errors.h>
|
#include <utils/Errors.h>
|
||||||
#include <utils/RefBase.h>
|
#include <utils/RefBase.h>
|
||||||
|
#include <utils/Singleton.h>
|
||||||
|
|
||||||
#include <binder/BinderService.h>
|
#include <binder/BinderService.h>
|
||||||
|
#include <binder/IServiceManager.h>
|
||||||
|
|
||||||
#include <gui/ISensorServer.h>
|
#include <gui/ISensorServer.h>
|
||||||
#include <gui/ISensorEventConnection.h>
|
#include <gui/ISensorEventConnection.h>
|
||||||
@@ -44,8 +46,37 @@ namespace android {
|
|||||||
* send something to application when they enable a sensor that is already
|
* 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
|
* 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).
|
* 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()
|
SensorService::SensorService()
|
||||||
: Thread(false),
|
: Thread(false),
|
||||||
mDump("android.permission.DUMP")
|
mDump("android.permission.DUMP")
|
||||||
@@ -201,6 +232,9 @@ status_t SensorService::enable(const sp<SensorEventConnection>& connection,
|
|||||||
mActiveSensors.add(handle, rec);
|
mActiveSensors.add(handle, rec);
|
||||||
err = mSensorDevice->activate(mSensorDevice, handle, 1);
|
err = mSensorDevice->activate(mSensorDevice, handle, 1);
|
||||||
LOGE_IF(err, "Error activating sensor %d (%s)", handle, strerror(-err));
|
LOGE_IF(err, "Error activating sensor %d (%s)", handle, strerror(-err));
|
||||||
|
if (err == 0) {
|
||||||
|
BatteryService::getInstance().enableSensor(handle);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
err = rec->addConnection(connection);
|
err = rec->addConnection(connection);
|
||||||
}
|
}
|
||||||
@@ -232,6 +266,9 @@ status_t SensorService::disable(const sp<SensorEventConnection>& connection,
|
|||||||
mActiveSensors.removeItem(handle);
|
mActiveSensors.removeItem(handle);
|
||||||
delete rec;
|
delete rec;
|
||||||
err = mSensorDevice->activate(mSensorDevice, handle, 0);
|
err = mSensorDevice->activate(mSensorDevice, handle, 0);
|
||||||
|
if (err == 0) {
|
||||||
|
BatteryService::getInstance().disableSensor(handle);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return err;
|
return err;
|
||||||
|
|||||||
Reference in New Issue
Block a user