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