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