platform_hardware_interfaces/health/2.1/IHealth.hal
Yifan Hong ed0fead8e4 health 2.1
Test: builds
Bug: 137670450

Change-Id: Ie8ec2733ee5338fef3639ab4deda47c9e5ce2179
2019-10-15 17:38:40 -07:00

80 lines
3.2 KiB
Text

/*
* Copyright (C) 2019 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.1;
import @2.0::IHealth;
import @2.0::Result;
import HealthConfig;
import HealthInfo;
import IHealthInfoCallback;
/**
* IHealth manages health info and posts events on registered callbacks.
*
* An implementation of @2.1::IHealth must be able to handle both
* @2.0::IHealthInfoCallback and @2.1::IHealthInfoCallback.
* - When registerCallback() is called, an implementation must cast the callback
* to @2.1::IHealthInfoCallback.
* - If the cast is successful, when a health info broadcast is sent, the
* implementation must call
* @2.1::IHealthInfoCallback.healthInfoChanged_2_1(). All fields introduced
* in 2.1 must be set appropriately. The implementation must not call
* @2.0::IHealthInfoCallback.healthInfoChanged().
* - If the cast is unsuccessful, the implementation must call
* @2.0::IHealthInfoCallback.healthInfoChanged().
* - When unregisterCallback() is called, from then on, updates must not be sent
* through either healthInfoChanged_2_1() or healthInfoChanged().
*
* Passthrough implementations are not required to send health info to all
* callbacks periodically, but they must do so when update() is called.
* Binderized implementations must send health info to all callbacks
* periodically. The intervals between two notifications must be retrieved from
* the passthrough implementation through the getHealthConfig() function.
*/
interface IHealth extends @2.0::IHealth {
/**
* Get configuration of this HAL.
*
* @return result SUCCESS if successful,
* NOT_SUPPORTED if this API is not supported,
* UNKNOWN for other errors.
* @return config HAL configuration, to be ignored if result is not
* SUCCESS.
*/
getHealthConfig() generates (Result result, HealthConfig config);
/**
* 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_2_1() generates (Result result, @2.1::HealthInfo value);
/**
* Return whether the screen should be kept on in charger mode.
*
* @return result SUCCESS if successful,
* NOT_SUPPORTED if this API is not supported,
* UNKNOWN for other errors.
* @return value whether screen should be kept on.
*/
shouldKeepScreenOn() generates (Result result, bool value);
};