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_BATTERYMONITOR_H
18752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor#define HEALTHD_BATTERYMONITOR_H
19752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor
20752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor#include <binder/IInterface.h>
21752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor#include <utils/String8.h>
22752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor#include <utils/Vector.h>
23752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor
24f5d3012d2c6ac343a0b8bcc95b9cd5137d9ef02fTodd Poynor#include "healthd.h"
25752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor#include "BatteryPropertiesRegistrar.h"
26752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor
27752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynornamespace android {
28752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor
29752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynorclass BatteryPropertiesRegistrar;
30752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor
31752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynorclass BatteryMonitor {
32752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor  public:
33752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor
34752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor    enum PowerSupplyType {
35752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor        ANDROID_POWER_SUPPLY_TYPE_UNKNOWN = 0,
36752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor        ANDROID_POWER_SUPPLY_TYPE_AC,
37752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor        ANDROID_POWER_SUPPLY_TYPE_USB,
38752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor        ANDROID_POWER_SUPPLY_TYPE_WIRELESS,
39752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor        ANDROID_POWER_SUPPLY_TYPE_BATTERY
40752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor    };
41752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor
42f5d3012d2c6ac343a0b8bcc95b9cd5137d9ef02fTodd Poynor    void init(struct healthd_config *hc, bool nosvcmgr);
43752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor    bool update(void);
44752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor
45752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor  private:
46f5d3012d2c6ac343a0b8bcc95b9cd5137d9ef02fTodd Poynor    struct healthd_config *mHealthdConfig;
47752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor    Vector<String8> mChargerNames;
48752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor
49752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor    sp<BatteryPropertiesRegistrar> mBatteryPropertiesRegistrar;
50752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor
51752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor    int getBatteryStatus(const char* status);
52752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor    int getBatteryHealth(const char* status);
53752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor    int readFromFile(const String8& path, char* buf, size_t size);
54752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor    PowerSupplyType readPowerSupplyType(const String8& path);
55752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor    bool getBooleanField(const String8& path);
56752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor    int getIntField(const String8& path);
57752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor};
58752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor
59752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor}; // namespace android
60752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor
61752faf2c18407fd79127fb3f3773910b4ddf669dTodd Poynor#endif // HEALTHD_BATTERY_MONTIOR_H
62