1c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil/* 2c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil * Copyright (C) 2016 The Android Open Source Project 3c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil * 4c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil * Licensed under the Apache License, Version 2.0 (the "License"); 5c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil * you may not use this file except in compliance with the License. 6c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil * You may obtain a copy of the License at 7c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil * 8c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil * http://www.apache.org/licenses/LICENSE-2.0 9c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil * 10c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil * Unless required by applicable law or agreed to in writing, software 11c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil * distributed under the License is distributed on an "AS IS" BASIS, 12c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil * See the License for the specific language governing permissions and 14c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil * limitations under the License. 15c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil */ 16c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 17c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil#include "include/hal_conversion.h" 18c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 19c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patilnamespace android { 20c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patilnamespace hardware { 21c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patilnamespace health { 22c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patilnamespace V1_0 { 23c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patilnamespace hal_conversion { 24c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 25c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patilvoid convertToHealthConfig(const struct healthd_config *hc, HealthConfig& config) { 26c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil config.periodicChoresIntervalFast = hc->periodic_chores_interval_fast; 27c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil config.periodicChoresIntervalSlow = hc->periodic_chores_interval_slow; 28c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 29c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil config.batteryStatusPath = hc->batteryStatusPath.string(); 30c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil config.batteryHealthPath = hc->batteryHealthPath.string(); 31c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil config.batteryPresentPath = hc->batteryPresentPath.string(); 32c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil config.batteryCapacityPath = hc->batteryCapacityPath.string(); 33c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil config.batteryVoltagePath = hc->batteryVoltagePath.string(); 34c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil config.batteryTemperaturePath = hc->batteryTemperaturePath.string(); 35c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil config.batteryTechnologyPath = hc->batteryTechnologyPath.string(); 36c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil config.batteryCurrentNowPath = hc->batteryCurrentNowPath.string(); 37c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil config.batteryCurrentAvgPath = hc->batteryCurrentAvgPath.string(); 38c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil config.batteryChargeCounterPath = hc->batteryChargeCounterPath.string(); 39c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil config.batteryFullChargePath = hc->batteryFullChargePath.string(); 40c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil config.batteryCycleCountPath = hc->batteryCycleCountPath.string(); 41c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 42c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil} 43c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 44c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patilvoid convertFromHealthConfig(const HealthConfig& c, struct healthd_config *hc) { 45c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil hc->periodic_chores_interval_fast = c.periodicChoresIntervalFast; 46c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil hc->periodic_chores_interval_slow = c.periodicChoresIntervalSlow; 47c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 48c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil hc->batteryStatusPath = 49c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil android::String8(c.batteryStatusPath.c_str(), 50c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil c.batteryStatusPath.size()); 51c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 52c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil hc->batteryHealthPath = 53c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil android::String8(c.batteryHealthPath.c_str(), 54c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil c.batteryHealthPath.size()); 55c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 56c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil hc->batteryPresentPath = 57c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil android::String8(c.batteryPresentPath.c_str(), 58c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil c.batteryPresentPath.size()); 59c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 60c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil hc->batteryCapacityPath = 61c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil android::String8(c.batteryCapacityPath.c_str(), 62c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil c.batteryCapacityPath.size()); 63c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 64c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil hc->batteryVoltagePath = 65c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil android::String8(c.batteryVoltagePath.c_str(), 66c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil c.batteryVoltagePath.size()); 67c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 68c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil hc->batteryTemperaturePath = 69c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil android::String8(c.batteryTemperaturePath.c_str(), 70c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil c.batteryTemperaturePath.size()); 71c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 72c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil hc->batteryTechnologyPath = 73c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil android::String8(c.batteryTechnologyPath.c_str(), 74c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil c.batteryTechnologyPath.size()); 75c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 76c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil hc->batteryCurrentNowPath = 77c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil android::String8(c.batteryCurrentNowPath.c_str(), 78c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil c.batteryCurrentNowPath.size()); 79c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 80c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil hc->batteryCurrentAvgPath = 81c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil android::String8(c.batteryCurrentAvgPath.c_str(), 82c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil c.batteryCurrentNowPath.size()); 83c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 84c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil hc->batteryChargeCounterPath = 85c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil android::String8(c.batteryChargeCounterPath.c_str(), 86c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil c.batteryChargeCounterPath.size()); 87c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 88c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil hc->batteryFullChargePath = 89c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil android::String8(c.batteryFullChargePath.c_str(), 90c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil c.batteryFullChargePath.size()); 91c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 92c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil hc->batteryCycleCountPath = 93c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil android::String8(c.batteryCycleCountPath.c_str(), 94c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil c.batteryCycleCountPath.size()); 95c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 96c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil // energyCounter is handled through special means so all calls to 97c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil // the function go across the HALs 98c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 99c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil // boot_min_cap - never used in Android (only in charger-mode). 100c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 101c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil // screen_on - never used in Android (only in charger mode). 102c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil} 103c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 104c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patilvoid convertToHealthInfo(const struct android::BatteryProperties *p, 105c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil HealthInfo& info) { 106c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil info.chargerAcOnline = p->chargerAcOnline; 107c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil info.chargerUsbOnline = p->chargerUsbOnline; 108c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil info.chargerWirelessOnline = p->chargerWirelessOnline; 109c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil info.maxChargingCurrent = p->maxChargingCurrent; 110c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil info.maxChargingVoltage = p->maxChargingVoltage; 111c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil info.batteryStatus = static_cast<BatteryStatus>(p->batteryStatus); 112c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil info.batteryHealth = static_cast<BatteryHealth>(p->batteryHealth); 113c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil info.batteryPresent = p->batteryPresent; 114c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil info.batteryLevel = p->batteryLevel; 115c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil info.batteryVoltage = p->batteryVoltage; 116c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil info.batteryTemperature = p->batteryTemperature; 117c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil info.batteryCurrent = p->batteryCurrent; 118c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil info.batteryCycleCount = p->batteryCycleCount; 119c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil info.batteryFullCharge = p->batteryFullCharge; 120c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil info.batteryChargeCounter = p->batteryChargeCounter; 121c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil info.batteryTechnology = p->batteryTechnology; 122c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil} 123c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 124c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patilvoid convertFromHealthInfo(const HealthInfo& info, 125c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil struct android::BatteryProperties *p) { 126c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil p->chargerAcOnline = info.chargerAcOnline; 127c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil p->chargerUsbOnline = info.chargerUsbOnline; 128c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil p->chargerWirelessOnline = info.chargerWirelessOnline; 129c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil p->maxChargingCurrent = info.maxChargingCurrent; 130c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil p->maxChargingVoltage = info.maxChargingVoltage; 131c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil p->batteryStatus = static_cast<int>(info.batteryStatus); 132c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil p->batteryHealth = static_cast<int>(info.batteryHealth); 133c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil p->batteryPresent = info.batteryPresent; 134c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil p->batteryLevel = info.batteryLevel; 135c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil p->batteryVoltage = info.batteryVoltage; 136c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil p->batteryTemperature = info.batteryTemperature; 137c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil p->batteryCurrent = info.batteryCurrent; 138c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil p->batteryCycleCount = info.batteryCycleCount; 139c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil p->batteryFullCharge = info.batteryFullCharge; 140c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil p->batteryChargeCounter = info.batteryChargeCounter; 141c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil p->batteryTechnology = android::String8(info.batteryTechnology.c_str()); 142c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil} 143c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil 144c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil} // namespace hal_conversion 145c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil} // namespace V1_0 146c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil} // namespace health 147c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil} // namespace hardware 148c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil} // namespace android 149