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 Patilpackage android.hardware.health@1.0;
18c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil
19c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patilinterface IHealth {
20c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil    /**
21c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     * This function lets you change healthd configuration from default if
22c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     * desired. It must be called exactly once at startup time.
23c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     *
24c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     * The configuration values are described in 'struct HealthConfig'.
25c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     * To use default configuration, simply return without modifying the
26c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     * fields of the config parameter.
27c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     *
28c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     * @param default healthd configuration.
29c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     */
30c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil    init(HealthConfig config) generates (HealthConfig configOut);
31c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil
32c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil    /**
33c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     * This function is a hook to update/change device's HealthInfo (as described
34c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     * in 'struct HealthInfo').
35c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     *
36c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     * 'HealthInfo' describes device's battery and charging status, typically
37c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     * read from kernel. These values may be modified in this call.
38c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     *
39c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     * @param   Device Health info as described in 'struct HealthInfo'.
40c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     * @return  skipLogging Indication to the caller to add 'or' skip logging the health
41c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     *          information. Return 'true' to skip logging the update.
42c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     * @return  infoOut HealthInfo to be sent to client code. (May or may
43c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     *          not be modified).
44c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     */
45c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil    update(HealthInfo info) generates (bool skipLogging, HealthInfo infoOut);
46c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil
47c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil    /**
48c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     * This function is called by healthd when framework queries for remaining
49c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     * energy in the Battery through BatteryManager APIs.
50c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     *
51c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     * @return  result Result of querying enery counter for the battery.
52c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     * @return  energy Battery remaining energy in nanowatt-hours.
53c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     *          Must be '0' if result is anything other than Result::SUCCESS.
54c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil     */
55c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil    energyCounter() generates (Result result, int64_t energy);
56c7a5ff736a849f3b25bfca6fead38a68185e9498Sandeep Patil};
57