blob: 230b5d095d281fcc325afde882ab13487ffd6a2c [file] [log] [blame]
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.hardware.health@2.0;
import @1.0::BatteryStatus;
import IHealthInfoCallback;
/**
* IHealth manages health info and posts events on registered callbacks.
*/
interface IHealth {
/**
* Register a callback for any health info events.
*
* Registering a new callback must not unregister the old one; the old
* callback remains registered until one of the following happens:
* - A client explicitly calls {@link unregisterCallback} to unregister it.
* - The client process that hosts the callback dies.
*
* @param callback the callback to register.
* @return result SUCCESS if successful,
* UNKNOWN for other errors.
*/
registerCallback(IHealthInfoCallback callback) generates (Result result);
/**
* Explicitly unregister a callback that is previously registered through
* {@link registerCallback}.
*
* @param callback the callback to unregister
* @return result SUCCESS if successful,
* NOT_FOUND if callback is not registered previously,
* UNKNOWN for other errors.
*/
unregisterCallback(IHealthInfoCallback callback) generates (Result result);
/**
* Schedule update.
*
* When update() is called, the service must notify all registered callbacks
* with the most recent health info.
*
* @return result SUCCESS if successful,
* CALLBACK_DIED if any registered callback is dead,
* UNKNOWN for other errors.
*/
update() generates (Result result);
/**
* Get battery capacity in microampere-hours(µAh).
*
* @return result SUCCESS if successful,
* NOT_SUPPORTED if this property is not supported
* (e.g. the file that stores this property does not exist),
* UNKNOWN for other errors.
* @return value battery capacity, or 0 if not successful.
*/
getChargeCounter() generates (Result result, int32_t value);
/**
* Get instantaneous battery current in microamperes(µA).
*
* Positive values indicate net current entering the battery from a charge
* source, negative values indicate net current discharging from the
* battery.
*
* @return result SUCCESS if successful,
* NOT_SUPPORTED if this property is not supported
* (e.g. the file that stores this property does not exist),
* UNKNOWN for other errors.
* @return value instantaneous battery current, or 0 if not
* successful.
*/
getCurrentNow() generates (Result result, int32_t value);
/**
* Get average battery current in microamperes(µA).
*
* Positive values indicate net current entering the battery from a charge
* source, negative values indicate net current discharging from the
* battery. The time period over which the average is computed may depend on
* the fuel gauge hardware and its configuration.
*
* @return result SUCCESS if successful,
* NOT_SUPPORTED if this property is not supported
* (e.g. the file that stores this property does not exist),
* UNKNOWN for other errors.
* @return value average battery current, or 0 if not successful.
*/
getCurrentAverage() generates (Result result, int32_t value);
/**
* Get remaining battery capacity percentage of total capacity
* (with no fractional part).
*
* @return result SUCCESS if successful,
* NOT_SUPPORTED if this property is not supported
* (e.g. the file that stores this property does not exist),
* UNKNOWN for other errors.
* @return value remaining battery capacity, or 0 if not successful.
*/
getCapacity() generates (Result result, int32_t value);
/**
* Get battery remaining energy in nanowatt-hours.
*
* @return result SUCCESS if successful,
* NOT_SUPPORTED if this property is not supported,
* UNKNOWN for other errors.
* @return value remaining energy, or 0 if not successful.
*/
getEnergyCounter() generates (Result result, int64_t value);
/**
* Get battery charge status.
*
* @return result SUCCESS if successful,
* NOT_SUPPORTED if this property is not supported
* (e.g. the file that stores this property does not exist),
* UNKNOWN other errors.
* @return value charge status, or UNKNOWN if not successful.
*/
getChargeStatus() generates (Result result, BatteryStatus value);
/**
* Get storage info.
*
* @return result SUCCESS if successful,
* NOT_SUPPORTED if this property is not supported,
* UNKNOWN other errors.
* @return value vector of StorageInfo structs, to be ignored if result is not
* SUCCESS.
*/
getStorageInfo() generates (Result result, vec<StorageInfo> value);
/**
* Gets disk statistics (number of reads/writes processed, number of I/O
* operations in flight etc).
*
* @return result SUCCESS if successful,
* NOT_SUPPORTED if this property is not supported,
* UNKNOWN other errors.
* @return value vector of disk statistics, to be ignored if result is not SUCCESS.
* The mapping is index 0->sda, 1->sdb and so on.
*/
getDiskStats() generates (Result result, vec<DiskStats> value);
/**
* Get Health Information.
*
* @return result SUCCESS if successful,
* NOT_SUPPORTED if this API is not supported,
* UNKNOWN for other errors.
* @return value Health information, to be ignored if result is not
* SUCCESS.
*/
getHealthInfo() generates (Result result, @2.0::HealthInfo value);
};