/* * Copyright (C) 2020 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.power; import android.annotation.NonNull; import android.annotation.Nullable; import android.hardware.power.stats.Channel; import android.hardware.power.stats.EnergyConsumer; import android.hardware.power.stats.EnergyConsumerResult; import android.hardware.power.stats.EnergyMeasurement; import android.hardware.power.stats.PowerEntity; import android.hardware.power.stats.StateResidencyResult; import java.util.concurrent.CompletableFuture; /** * Power stats local system service interface. * * @hide Only for use within Android OS. */ public abstract class PowerStatsInternal { /** * Returns the energy consumer info for all available {@link EnergyConsumer} * * @return List of available {@link EnergyConsumer}, or null if {@link EnergyConsumer} not * supported */ @Nullable public abstract EnergyConsumer[] getEnergyConsumerInfo(); /** * Returns a CompletableFuture that will get an {@link EnergyConsumerResult} array for the * available requested energy consumers (power models). * * @param energyConsumerIds Array of {@link EnergyConsumerId} for which energy consumed is being * requested. * * @return A Future containing a list of {@link EnergyConsumerResult} objects containing energy * consumer results for all listed {@link EnergyConsumerId}. null if * {@link EnergyConsumer} not supported */ @NonNull public abstract CompletableFuture getEnergyConsumedAsync( int[] energyConsumerIds); /** * Returns the power entity info for all available {@link PowerEntity} * * @return List of available {@link PowerEntity} or null if {@link PowerEntity} not * supported */ @Nullable public abstract PowerEntity[] getPowerEntityInfo(); /** * Returns a CompletableFuture that will get a {@link StateResidencyResult} array for the * available requested power entities. * * @param powerEntityIds Array of {@link PowerEntity.id} for which state residency is being * requested. * * @return A Future containing a list of {@link StateResidencyResult} objects containing state * residency results for all listed {@link PowerEntity.id}. null if {@link PowerEntity} * not supported */ @NonNull public abstract CompletableFuture getStateResidencyAsync( int[] powerEntityIds); /** * Returns the channel info for all available {@link Channel} * * @return List of available {@link Channel} or null if {@link Channel} not supported */ @Nullable public abstract Channel[] getEnergyMeterInfo(); /** * Returns a CompletableFuture that will get a {@link EnergyMeasurement} array for the * available requested channels. * * @param channelIds Array of {@link Channel.id} for accumulated energy is being requested. * * @return A Future containing a list of {@link EnergyMeasurement} objects containing * accumulated energy measurements for all listed {@link Channel.id}. null if * {@link Channel} not supported */ @NonNull public abstract CompletableFuture readEnergyMeterAsync( int[] channelIds); }