Add libbatteryservice AIDL and java interfaces

Add IBatteryPropertiesRegistrar and IBatteryPropertiesListener AIDLs,
BatteryProperties class.

Change-Id: Ic8e71178c02b04868eca29c3da88e877bc2590ca
diff --git a/Android.mk b/Android.mk
index 1fa8794..f5b1cd9 100644
--- a/Android.mk
+++ b/Android.mk
@@ -143,6 +143,8 @@
 	core/java/android/nfc/INfcAdapter.aidl \
 	core/java/android/nfc/INfcAdapterExtras.aidl \
 	core/java/android/nfc/INfcTag.aidl \
+	core/java/android/os/IBatteryPropertiesListener.aidl \
+	core/java/android/os/IBatteryPropertiesRegistrar.aidl \
 	core/java/android/os/ICancellationSignal.aidl \
 	core/java/android/os/IHardwareService.aidl \
 	core/java/android/os/IMessenger.aidl \
diff --git a/core/java/android/os/BatteryProperties.aidl b/core/java/android/os/BatteryProperties.aidl
new file mode 100644
index 0000000..31fa7b8
--- /dev/null
+++ b/core/java/android/os/BatteryProperties.aidl
@@ -0,0 +1,19 @@
+/*
+** Copyright 2013, 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.os;
+
+parcelable BatteryProperties;
diff --git a/core/java/android/os/BatteryProperties.java b/core/java/android/os/BatteryProperties.java
new file mode 100644
index 0000000..2d67264
--- /dev/null
+++ b/core/java/android/os/BatteryProperties.java
@@ -0,0 +1,81 @@
+/* Copyright 2013, 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.os;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * {@hide}
+ */
+public class BatteryProperties implements Parcelable {
+    public boolean chargerAcOnline;
+    public boolean chargerUsbOnline;
+    public boolean chargerWirelessOnline;
+    public int batteryStatus;
+    public int batteryHealth;
+    public boolean batteryPresent;
+    public int batteryLevel;
+    public int batteryVoltage;
+    public int batteryTemperature;
+    public String batteryTechnology;
+
+    /*
+     * Parcel read/write code must be kept in sync with
+     * frameworks/native/services/batteryservice/BatteryProperties.cpp
+     */
+
+    private BatteryProperties(Parcel p) {
+        chargerAcOnline = p.readInt() == 1 ? true : false;
+        chargerUsbOnline = p.readInt() == 1 ? true : false;
+        chargerWirelessOnline = p.readInt() == 1 ? true : false;
+        batteryStatus = p.readInt();
+        batteryHealth = p.readInt();
+        batteryPresent = p.readInt() == 1 ? true : false;
+        batteryLevel = p.readInt();
+        batteryVoltage = p.readInt();
+        batteryTemperature = p.readInt();
+        batteryTechnology = p.readString();
+    }
+
+    public void writeToParcel(Parcel p, int flags) {
+        p.writeInt(chargerAcOnline ? 1 : 0);
+        p.writeInt(chargerUsbOnline ? 1 : 0);
+        p.writeInt(chargerWirelessOnline ? 1 : 0);
+        p.writeInt(batteryStatus);
+        p.writeInt(batteryHealth);
+        p.writeInt(batteryPresent ? 1 : 0);
+        p.writeInt(batteryLevel);
+        p.writeInt(batteryVoltage);
+        p.writeInt(batteryTemperature);
+        p.writeString(batteryTechnology);
+    }
+
+    public static final Parcelable.Creator<BatteryProperties> CREATOR
+        = new Parcelable.Creator<BatteryProperties>() {
+        public BatteryProperties createFromParcel(Parcel p) {
+            return new BatteryProperties(p);
+        }
+
+        public BatteryProperties[] newArray(int size) {
+            return new BatteryProperties[size];
+        }
+    };
+
+    public int describeContents() {
+        return 0;
+    }
+}
diff --git a/core/java/android/os/IBatteryPropertiesListener.aidl b/core/java/android/os/IBatteryPropertiesListener.aidl
new file mode 100644
index 0000000..7e23924
--- /dev/null
+++ b/core/java/android/os/IBatteryPropertiesListener.aidl
@@ -0,0 +1,27 @@
+/*
+** Copyright 2013, 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.os;
+
+import android.os.BatteryProperties;
+
+/**
+ * {@hide}
+ */
+
+oneway interface IBatteryPropertiesListener {
+    void batteryPropertiesChanged(in BatteryProperties props);
+}
diff --git a/core/java/android/os/IBatteryPropertiesRegistrar.aidl b/core/java/android/os/IBatteryPropertiesRegistrar.aidl
new file mode 100644
index 0000000..376f6c9
--- /dev/null
+++ b/core/java/android/os/IBatteryPropertiesRegistrar.aidl
@@ -0,0 +1,28 @@
+/*
+** Copyright 2013, 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.os;
+
+import android.os.IBatteryPropertiesListener;
+
+/**
+ * {@hide}
+ */
+
+interface IBatteryPropertiesRegistrar {
+    void registerListener(IBatteryPropertiesListener listener);
+    void unregisterListener(IBatteryPropertiesListener listener);
+}