1752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor/* 2752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor * Copyright (C) 2013 The Android Open Source Project 3752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor * 4752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor * Licensed under the Apache License, Version 2.0 (the "License"); 5752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor * you may not use this file except in compliance with the License. 6752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor * You may obtain a copy of the License at 7752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor * 8752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor * http://www.apache.org/licenses/LICENSE-2.0 9752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor * 10752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor * Unless required by applicable law or agreed to in writing, software 11752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor * distributed under the License is distributed on an "AS IS" BASIS, 12752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor * See the License for the specific language governing permissions and 14752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor * limitations under the License. 15752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor */ 16752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor 17752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor#ifndef HEALTHD_BATTERYPROPERTIES_REGISTRAR_H 18752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor#define HEALTHD_BATTERYPROPERTIES_REGISTRAR_H 19752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor 20752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor#include "BatteryMonitor.h" 21752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor 22752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor#include <binder/IBinder.h> 23752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor#include <utils/Mutex.h> 24752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor#include <utils/Vector.h> 25752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor#include <batteryservice/BatteryService.h> 26752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor#include <batteryservice/IBatteryPropertiesListener.h> 27752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor#include <batteryservice/IBatteryPropertiesRegistrar.h> 28752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor 29752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynornamespace android { 30752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor 31752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynorclass BatteryMonitor; 32752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor 33752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynorclass BatteryPropertiesRegistrar : public BnBatteryPropertiesRegistrar, 34752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor public IBinder::DeathRecipient { 35752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynorpublic: 36752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor BatteryPropertiesRegistrar(BatteryMonitor* monitor); 37752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor void publish(); 38752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor void notifyListeners(struct BatteryProperties props); 39752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor 40752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynorprivate: 41752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor BatteryMonitor* mBatteryMonitor; 42752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor Mutex mRegistrationLock; 43752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor Vector<sp<IBatteryPropertiesListener> > mListeners; 44752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor 45752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor void registerListener(const sp<IBatteryPropertiesListener>& listener); 46752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor void unregisterListener(const sp<IBatteryPropertiesListener>& listener); 47752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor void binderDied(const wp<IBinder>& who); 48752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor}; 49752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor 50752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor}; // namespace android 51752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor 52752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor#endif // HEALTHD_BATTERYPROPERTIES_REGISTRAR_H 53