diff options
Diffstat (limited to 'services/sensorservice/BatteryService.h')
-rw-r--r-- | services/sensorservice/BatteryService.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/services/sensorservice/BatteryService.h b/services/sensorservice/BatteryService.h new file mode 100644 index 0000000..86cc884 --- /dev/null +++ b/services/sensorservice/BatteryService.h @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <stdint.h> +#include <sys/types.h> + +#include <utils/Singleton.h> + +namespace android { +// --------------------------------------------------------------------------- + +class BatteryService : public Singleton<BatteryService> { + static const int TRANSACTION_noteStartSensor = IBinder::FIRST_CALL_TRANSACTION + 3; + static const int TRANSACTION_noteStopSensor = IBinder::FIRST_CALL_TRANSACTION + 4; + static const String16 DESCRIPTOR; + + friend class Singleton<BatteryService>; + sp<IBinder> mBatteryStatService; + + BatteryService(); + status_t noteStartSensor(int uid, int handle); + status_t noteStopSensor(int uid, int handle); + + void enableSensorImpl(uid_t uid, int handle); + void disableSensorImpl(uid_t uid, int handle); + void cleanupImpl(uid_t uid); + + struct Info { + uid_t uid; + int handle; + int32_t count; + Info() : uid(0), handle(0), count(0) { } + Info(uid_t uid, int handle) : uid(uid), handle(handle), count(0) { } + bool operator < (const Info& rhs) const { + return (uid == rhs.uid) ? (handle < rhs.handle) : (uid < rhs.uid); + } + }; + + Mutex mActivationsLock; + SortedVector<Info> mActivations; + bool addSensor(uid_t uid, int handle); + bool removeSensor(uid_t uid, int handle); + +public: + static void enableSensor(uid_t uid, int handle) { + BatteryService::getInstance().enableSensorImpl(uid, handle); + } + static void disableSensor(uid_t uid, int handle) { + BatteryService::getInstance().disableSensorImpl(uid, handle); + } + static void cleanup(uid_t uid) { + BatteryService::getInstance().cleanupImpl(uid); + } +}; + +// --------------------------------------------------------------------------- +}; // namespace android + |