xref: /aosp_15_r20/frameworks/av/media/psh_utils/include/psh_utils/HealthStats.h (revision ec779b8e0859a360c3d303172224686826e6e0e1)
1 /*
2  * Copyright (C) 2024 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 #pragma once
18 
19 #include <string>
20 
21 namespace android::media::psh_utils {
22 
23 // From hardware/interfaces/health/aidl/android/hardware/health/HealthInfo.aidl
24 
25 struct HealthStats {
26     /**
27      * Instantaneous battery voltage in millivolts (mV).
28      *
29      * Historically, the unit of this field is microvolts (µV), but all
30      * clients and implementations uses millivolts in practice, making it
31      * the de-facto standard.
32      */
33     double batteryVoltageMillivolts;
34     /**
35      * Battery charge value when it is considered to be "full" in µA-h
36      */
37     double batteryFullChargeUah;
38     /**
39      * Instantaneous battery capacity in µA-h
40      */
41     double batteryChargeCounterUah;
42 
43     std::string normalizedEnergy(double time) const;
44 
isValidHealthStats45     bool isValid() const { return batteryVoltageMillivolts > 0; }
46 
47     // Returns {seconds, joules, watts} from battery counters
48     std::tuple<float, float, float> energyFrom(const std::string& s) const;
49     std::string toString() const;
50 
51     HealthStats operator+=(const HealthStats& other);
52     HealthStats operator-=(const HealthStats& other);
53     HealthStats operator+(const HealthStats& other) const;
54     HealthStats operator-(const HealthStats& other) const;
55     bool operator==(const HealthStats& other) const = default;
56 };
57 
58 } // namespace android::media::psh_utils
59