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