BatteryProperty.java revision e35872da97ac6bd07d2d9ac5af8a7c18ad290718
1d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor/* Copyright 2013, The Android Open Source Project
2d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor *
3d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor * Licensed under the Apache License, Version 2.0 (the "License");
4d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor * you may not use this file except in compliance with the License.
5d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor * You may obtain a copy of the License at
6d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor *
7d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor *     http://www.apache.org/licenses/LICENSE-2.0
8d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor *
9d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor * Unless required by applicable law or agreed to in writing, software
10d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor * distributed under the License is distributed on an "AS IS" BASIS,
11d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor * See the License for the specific language governing permissions and
13d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor * limitations under the License.
14d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor*/
15d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor
16d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynorpackage android.os;
17d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor
18d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynorimport android.os.Parcel;
19d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynorimport android.os.Parcelable;
20d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor
21d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor/**
22e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor * Battery properties that may be queried using
23e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor * {@link BatteryManager#getProperty
24e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor * BatteryManager.getProperty()}
25d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor */
26d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynorpublic class BatteryProperty implements Parcelable {
27d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor    /*
28d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor     * Battery property identifiers.  These must match the values in
29d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor     * frameworks/native/include/batteryservice/BatteryService.h
30d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor     */
31e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor    /** Battery capacity in microampere-hours, as an integer. */
32e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor    public static final int CHARGE_COUNTER = 1;
33d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor
34e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor    /**
35e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     * Instantaneous battery current in microamperes, as an integer.  Positive
36e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     * values indicate net current entering the battery from a charge source,
37e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     * negative values indicate net current discharging from the battery.
38e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     */
39e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor    public static final int CURRENT_NOW = 2;
40e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor
41e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor    /**
42e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     * Average battery current in microamperes, as an integer.  Positive
43e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     * values indicate net current entering the battery from a charge source,
44e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     * negative values indicate net current discharging from the battery.
45e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     * The time period over which the average is computed may depend on the
46e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     * fuel gauge hardware and its configuration.
47e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     */
48e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor    public static final int CURRENT_AVERAGE = 3;
49d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor
50e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor    /**
51e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     * Remaining battery capacity as an integer percentage of total capacity
52e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     * (with no fractional part).
53e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     */
54e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor    public static final int CAPACITY = 4;
55e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor
56e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor    private int mValueInt;
57e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor
58e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor    /**
59e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     * @hide
60e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     */
61e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor    public BatteryProperty(int value) {
62e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor        mValueInt = value;
63e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor    }
64e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor
65e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor    /**
66e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     * @hide
67e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     */
68d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor    public BatteryProperty() {
69e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor        mValueInt = Integer.MIN_VALUE;
70e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor    }
71e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor
72e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor    /**
73e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     * Return the value of a property of integer type previously queried
74e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     * via {@link BatteryManager#getProperty
75e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     * BatteryManager.getProperty()}.  If the platform does
76e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     * not provide the property queried, this value will be
77e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     * Integer.MIN_VALUE.
78e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     *
79e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     * @return The queried property value, or Integer.MIN_VALUE if not supported.
80e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor     */
81e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor    public int getInt() {
82e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor        return mValueInt;
83d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor    }
84d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor
85d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor    /*
86d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor     * Parcel read/write code must be kept in sync with
87d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor     * frameworks/native/services/batteryservice/BatteryProperty.cpp
88d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor     */
89d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor
90d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor    private BatteryProperty(Parcel p) {
91d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor        readFromParcel(p);
92d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor    }
93d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor
94d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor    public void readFromParcel(Parcel p) {
95e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor        mValueInt = p.readInt();
96d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor    }
97d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor
98d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor    public void writeToParcel(Parcel p, int flags) {
99e35872da97ac6bd07d2d9ac5af8a7c18ad290718Todd Poynor        p.writeInt(mValueInt);
100d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor    }
101d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor
102d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor    public static final Parcelable.Creator<BatteryProperty> CREATOR
103d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor        = new Parcelable.Creator<BatteryProperty>() {
104d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor        public BatteryProperty createFromParcel(Parcel p) {
105d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor            return new BatteryProperty(p);
106d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor        }
107d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor
108d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor        public BatteryProperty[] newArray(int size) {
109d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor            return new BatteryProperty[size];
110d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor        }
111d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor    };
112d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor
113d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor    public int describeContents() {
114d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor        return 0;
115d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor    }
116d7b34771cbb89c056e7c0f8976db431cad1ace8cTodd Poynor}
117