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