Home | History | Annotate | Download | only in 1.0
      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 package android.hardware.health@1.0;
     18 
     19 /**
     20  * Possible return values for optional HAL method(s) like
     21  * IHealth::energyCounter()
     22  */
     23 enum Result : int32_t {
     24     SUCCESS,
     25     NOT_SUPPORTED,
     26     UNKNOWN,
     27 };
     28 
     29 /**
     30  * Possible values for Battery Status.
     31  * Note: These are currently in sync with BatteryManager and must not
     32  * be extended / altered.
     33  */
     34 @export(name="", value_prefix="BATTERY_STATUS_")
     35 enum BatteryStatus : int32_t {
     36     UNKNOWN = 1,
     37     CHARGING = 2,
     38     DISCHARGING = 3,
     39     /**
     40      * Battery is *not* charging - special case when charger is present
     41      * but battery isn't charging
     42      */
     43     NOT_CHARGING = 4,
     44     FULL = 5,
     45 };
     46 
     47 /**
     48  * Possible values for Battery Health.
     49  * Note: These are currently in sync with BatteryManager and must not
     50  * be extended / altered.
     51  */
     52 @export(name="", value_prefix="BATTERY_HEALTH_")
     53 enum BatteryHealth : int32_t {
     54     UNKNOWN = 1,
     55     GOOD = 2,
     56     OVERHEAT = 3,
     57     DEAD = 4,
     58     OVER_VOLTAGE = 5,
     59     /**
     60      * Battery experienced an unknown/unspecifid failure.
     61      */
     62     UNSPECIFIED_FAILURE = 6,
     63     COLD = 7,
     64 };
     65 
     66 struct HealthConfig {
     67 
     68     /**
     69      * periodicChoresIntervalFast is used while the device is not in
     70      * suspend, or in suspend and connected to a charger (to watch for battery
     71      * overheat due to charging)
     72      */
     73     int32_t periodicChoresIntervalFast;
     74 
     75     /**
     76      * periodicChoresIntervalSlow is used when the device is in suspend and
     77      * not connected to a charger (to watch for a battery drained to zero
     78      * remaining capacity).
     79      */
     80     int32_t periodicChoresIntervalSlow;
     81 
     82     /**
     83      * power_supply sysfs attribute file paths. Set these to specific paths
     84      * to use for the associated battery parameters. Clients must search
     85      * for appropriate power_supply attribute files to use, for any paths
     86      * left empty after the HAL is initialized.
     87      */
     88 
     89     /**
     90      * batteryStatusPath - file path to read battery charging status.
     91      * (POWER_SUPPLY_PROP_STATUS)
     92      */
     93     string batteryStatusPath;
     94 
     95 
     96     /**
     97      * batteryHealthPath - file path to read battery health.
     98      * (POWER_SUPPLY_PROP_HEALTH)
     99      */
    100     string batteryHealthPath;
    101 
    102     /**
    103      * batteryPresentPath - file path to read battery present status.
    104      * (POWER_SUPPLY_PROP_PRESENT)
    105      */
    106     string batteryPresentPath;
    107 
    108 
    109     /**
    110      * batteryCapacityPath - file path to read remaining battery capacity.
    111      * (POWER_SUPPLY_PROP_CAPACITY)
    112      */
    113     string batteryCapacityPath;
    114 
    115     /**
    116      * batteryVoltagePath - file path to read battery voltage.
    117      * (POWER_SUPPLY_PROP_VOLTAGE_NOW)
    118      */
    119     string batteryVoltagePath;
    120 
    121     /**
    122      * batteryTemperaturePath - file path to read battery temperature in tenths
    123      * of degree celcius. (POWER_SUPPLY_PROP_TEMP)
    124      */
    125     string batteryTemperaturePath;
    126 
    127     /**
    128      * batteryTechnologyPath - file path to read battery technology.
    129      * (POWER_SUPPLY_PROP_TECHNOLOGY)
    130      */
    131     string batteryTechnologyPath;
    132 
    133     /**
    134      * batteryCurrentNowPath - file path to read battery instantaneous current.
    135      * (POWER_SUPPLY_PROP_CURRENT_NOW)
    136      */
    137     string batteryCurrentNowPath;
    138 
    139     /**
    140      * batteryCurrentAvgPath - file path to read battery average current.
    141      * (POWER_SUPPLY_PROP_CURRENT_AVG)
    142      */
    143     string batteryCurrentAvgPath;
    144 
    145     /**
    146      * batteryChargeCounterPath - file path to read battery accumulated charge.
    147      * (POWER_SUPPLY_PROP_CHARGE_COUNTER)
    148      */
    149     string batteryChargeCounterPath;
    150 
    151     /**
    152      * batteryFullChargerPath - file path to read battery charge value when it
    153      * is considered to be full. (POWER_SUPPLY_PROP_CHARGE_FULL)
    154      */
    155     string batteryFullChargePath;
    156 
    157     /**
    158      * batteryCycleCountPath - file path to read battery charge cycle count.
    159      * (POWER_SUPPLY_PROP_CYCLE_COUNT)
    160      */
    161     string batteryCycleCountPath;
    162 };
    163 
    164 /**
    165  * The parameter to healthd mainloop update calls
    166  */
    167 struct HealthInfo {
    168     /** AC charger state - 'true' if online */
    169     bool chargerAcOnline;
    170 
    171     /** USB charger state - 'true' if online */
    172     bool chargerUsbOnline;
    173 
    174     /** Wireless charger state - 'true' if online */
    175     bool chargerWirelessOnline;
    176 
    177     /** Maximum charging current supported by charger in uA */
    178     int32_t maxChargingCurrent;
    179 
    180     /** Maximum charging voltage supported by charger in uV */
    181     int32_t maxChargingVoltage;
    182 
    183     BatteryStatus batteryStatus;
    184 
    185     BatteryHealth batteryHealth;
    186 
    187     /** 'true' if battery is present */
    188     bool batteryPresent;
    189 
    190     /** Remaining battery capacity in percent */
    191     int32_t batteryLevel;
    192 
    193     /** Instantaneous battery voltage in uV */
    194     int32_t batteryVoltage;
    195 
    196     /** Instantaneous battery temperature in tenths of degree celcius */
    197     int32_t batteryTemperature;
    198 
    199     /** Instantaneous battery current in uA */
    200     int32_t batteryCurrent;
    201 
    202     /** Battery charge cycle count */
    203     int32_t batteryCycleCount;
    204 
    205     /** Battery charge value when it is considered to be "full" in uA-h */
    206     int32_t batteryFullCharge;
    207 
    208     /** Instantaneous battery capacity in uA-h */
    209     int32_t batteryChargeCounter;
    210 
    211     /** Battery technology, e.g. "Li-ion, Li-Poly" etc. */
    212     string batteryTechnology;
    213 };
    214