1a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor/* Copyright 2013, The Android Open Source Project
2a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor *
3a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor * Licensed under the Apache License, Version 2.0 (the "License");
4a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor * you may not use this file except in compliance with the License.
5a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor * You may obtain a copy of the License at
6a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor *
7a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor *     http://www.apache.org/licenses/LICENSE-2.0
8a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor *
9a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor * Unless required by applicable law or agreed to in writing, software
10a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor * distributed under the License is distributed on an "AS IS" BASIS,
11a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor * See the License for the specific language governing permissions and
13a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor * limitations under the License.
14a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor*/
15a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor
16a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynorpackage android.os;
17a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor
18a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor/**
19a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor * {@hide}
20a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor */
21a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynorpublic class BatteryProperties implements Parcelable {
22a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor    public boolean chargerAcOnline;
23a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor    public boolean chargerUsbOnline;
24a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor    public boolean chargerWirelessOnline;
257b04311d88e377c67b4c663091b6b1c63c932c52Adrian Roos    public int maxChargingCurrent;
26f92fcfe36ad841cba4774e7f2129e8dab7ac784aBadhri Jagan Sridharan    public int maxChargingVoltage;
27a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor    public int batteryStatus;
28a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor    public int batteryHealth;
29a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor    public boolean batteryPresent;
30a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor    public int batteryLevel;
31a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor    public int batteryVoltage;
32a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor    public int batteryTemperature;
33abcb9f3e7637146b64104d34a44b46f0c981314bAdam Lesinski    public int batteryFullCharge;
346361e22feae7cdb0968f1056c7834e2825eeae31Ruchi Kandoi    public int batteryChargeCounter;
35a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor    public String batteryTechnology;
36a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor
37a1f1a3c573acd91024fda0ceb3b921c73b186963Dianne Hackborn    public BatteryProperties() {
38a1f1a3c573acd91024fda0ceb3b921c73b186963Dianne Hackborn    }
39a1f1a3c573acd91024fda0ceb3b921c73b186963Dianne Hackborn
40a1f1a3c573acd91024fda0ceb3b921c73b186963Dianne Hackborn    public void set(BatteryProperties other) {
41a1f1a3c573acd91024fda0ceb3b921c73b186963Dianne Hackborn        chargerAcOnline = other.chargerAcOnline;
42a1f1a3c573acd91024fda0ceb3b921c73b186963Dianne Hackborn        chargerUsbOnline = other.chargerUsbOnline;
43a1f1a3c573acd91024fda0ceb3b921c73b186963Dianne Hackborn        chargerWirelessOnline = other.chargerWirelessOnline;
447b04311d88e377c67b4c663091b6b1c63c932c52Adrian Roos        maxChargingCurrent = other.maxChargingCurrent;
45f92fcfe36ad841cba4774e7f2129e8dab7ac784aBadhri Jagan Sridharan        maxChargingVoltage = other.maxChargingVoltage;
46a1f1a3c573acd91024fda0ceb3b921c73b186963Dianne Hackborn        batteryStatus = other.batteryStatus;
47a1f1a3c573acd91024fda0ceb3b921c73b186963Dianne Hackborn        batteryHealth = other.batteryHealth;
48a1f1a3c573acd91024fda0ceb3b921c73b186963Dianne Hackborn        batteryPresent = other.batteryPresent;
49a1f1a3c573acd91024fda0ceb3b921c73b186963Dianne Hackborn        batteryLevel = other.batteryLevel;
50a1f1a3c573acd91024fda0ceb3b921c73b186963Dianne Hackborn        batteryVoltage = other.batteryVoltage;
51a1f1a3c573acd91024fda0ceb3b921c73b186963Dianne Hackborn        batteryTemperature = other.batteryTemperature;
52abcb9f3e7637146b64104d34a44b46f0c981314bAdam Lesinski        batteryFullCharge = other.batteryFullCharge;
536361e22feae7cdb0968f1056c7834e2825eeae31Ruchi Kandoi        batteryChargeCounter = other.batteryChargeCounter;
54a1f1a3c573acd91024fda0ceb3b921c73b186963Dianne Hackborn        batteryTechnology = other.batteryTechnology;
55a1f1a3c573acd91024fda0ceb3b921c73b186963Dianne Hackborn    }
56a1f1a3c573acd91024fda0ceb3b921c73b186963Dianne Hackborn
57a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor    /*
58a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor     * Parcel read/write code must be kept in sync with
59a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor     * frameworks/native/services/batteryservice/BatteryProperties.cpp
60a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor     */
61a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor
62a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor    private BatteryProperties(Parcel p) {
63a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        chargerAcOnline = p.readInt() == 1 ? true : false;
64a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        chargerUsbOnline = p.readInt() == 1 ? true : false;
65a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        chargerWirelessOnline = p.readInt() == 1 ? true : false;
667b04311d88e377c67b4c663091b6b1c63c932c52Adrian Roos        maxChargingCurrent = p.readInt();
67f92fcfe36ad841cba4774e7f2129e8dab7ac784aBadhri Jagan Sridharan        maxChargingVoltage = p.readInt();
68a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        batteryStatus = p.readInt();
69a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        batteryHealth = p.readInt();
70a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        batteryPresent = p.readInt() == 1 ? true : false;
71a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        batteryLevel = p.readInt();
72a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        batteryVoltage = p.readInt();
73a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        batteryTemperature = p.readInt();
74abcb9f3e7637146b64104d34a44b46f0c981314bAdam Lesinski        batteryFullCharge = p.readInt();
756361e22feae7cdb0968f1056c7834e2825eeae31Ruchi Kandoi        batteryChargeCounter = p.readInt();
76a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        batteryTechnology = p.readString();
77a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor    }
78a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor
79a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor    public void writeToParcel(Parcel p, int flags) {
80a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        p.writeInt(chargerAcOnline ? 1 : 0);
81a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        p.writeInt(chargerUsbOnline ? 1 : 0);
82a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        p.writeInt(chargerWirelessOnline ? 1 : 0);
837b04311d88e377c67b4c663091b6b1c63c932c52Adrian Roos        p.writeInt(maxChargingCurrent);
84f92fcfe36ad841cba4774e7f2129e8dab7ac784aBadhri Jagan Sridharan        p.writeInt(maxChargingVoltage);
85a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        p.writeInt(batteryStatus);
86a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        p.writeInt(batteryHealth);
87a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        p.writeInt(batteryPresent ? 1 : 0);
88a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        p.writeInt(batteryLevel);
89a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        p.writeInt(batteryVoltage);
90a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        p.writeInt(batteryTemperature);
91abcb9f3e7637146b64104d34a44b46f0c981314bAdam Lesinski        p.writeInt(batteryFullCharge);
926361e22feae7cdb0968f1056c7834e2825eeae31Ruchi Kandoi        p.writeInt(batteryChargeCounter);
93a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        p.writeString(batteryTechnology);
94a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor    }
95a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor
96a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor    public static final Parcelable.Creator<BatteryProperties> CREATOR
97a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        = new Parcelable.Creator<BatteryProperties>() {
98a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        public BatteryProperties createFromParcel(Parcel p) {
99a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor            return new BatteryProperties(p);
100a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        }
101a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor
102a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        public BatteryProperties[] newArray(int size) {
103a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor            return new BatteryProperties[size];
104a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        }
105a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor    };
106a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor
107a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor    public int describeContents() {
108a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor        return 0;
109a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor    }
110a9de3462a6f4eaea63e12d82aaa0eb5728b1f812Todd Poynor}
111