am a5d5d608: Merge "add wireless charger support" into jb-mr1-dev

* commit 'a5d5d608ccd885d8328879dde782a8cc93b7cf4f':
  add wireless charger support
This commit is contained in:
Brian Muramatsu
2012-08-20 16:59:53 -07:00
committed by Android Git Automerger
8 changed files with 39 additions and 7 deletions

View File

@@ -15525,6 +15525,7 @@ package android.os {
field public static final int BATTERY_HEALTH_UNSPECIFIED_FAILURE = 6; // 0x6 field public static final int BATTERY_HEALTH_UNSPECIFIED_FAILURE = 6; // 0x6
field public static final int BATTERY_PLUGGED_AC = 1; // 0x1 field public static final int BATTERY_PLUGGED_AC = 1; // 0x1
field public static final int BATTERY_PLUGGED_USB = 2; // 0x2 field public static final int BATTERY_PLUGGED_USB = 2; // 0x2
field public static final int BATTERY_PLUGGED_WIRELESS = 4; // 0x4
field public static final int BATTERY_STATUS_CHARGING = 2; // 0x2 field public static final int BATTERY_STATUS_CHARGING = 2; // 0x2
field public static final int BATTERY_STATUS_DISCHARGING = 3; // 0x3 field public static final int BATTERY_STATUS_DISCHARGING = 3; // 0x3
field public static final int BATTERY_STATUS_FULL = 5; // 0x5 field public static final int BATTERY_STATUS_FULL = 5; // 0x5

View File

@@ -37,7 +37,7 @@ public class PowerCommand extends Svc.Command {
public String longHelp() { public String longHelp() {
return shortHelp() + "\n" return shortHelp() + "\n"
+ "\n" + "\n"
+ "usage: svc power stayon [true|false|usb|ac]\n" + "usage: svc power stayon [true|false|usb|ac|wireless]\n"
+ " Set the 'keep awake while plugged in' setting.\n"; + " Set the 'keep awake while plugged in' setting.\n";
} }
@@ -48,7 +48,8 @@ public class PowerCommand extends Svc.Command {
int val; int val;
if ("true".equals(args[2])) { if ("true".equals(args[2])) {
val = BatteryManager.BATTERY_PLUGGED_AC | val = BatteryManager.BATTERY_PLUGGED_AC |
BatteryManager.BATTERY_PLUGGED_USB; BatteryManager.BATTERY_PLUGGED_USB |
BatteryManager.BATTERY_PLUGGED_WIRELESS;
} }
else if ("false".equals(args[2])) { else if ("false".equals(args[2])) {
val = 0; val = 0;
@@ -56,8 +57,9 @@ public class PowerCommand extends Svc.Command {
val = BatteryManager.BATTERY_PLUGGED_USB; val = BatteryManager.BATTERY_PLUGGED_USB;
} else if ("ac".equals(args[2])) { } else if ("ac".equals(args[2])) {
val = BatteryManager.BATTERY_PLUGGED_AC; val = BatteryManager.BATTERY_PLUGGED_AC;
} } else if ("wireless".equals(args[2])) {
else { val = BatteryManager.BATTERY_PLUGGED_WIRELESS;
} else {
break fail; break fail;
} }
IPowerManager pm IPowerManager pm

View File

@@ -115,4 +115,6 @@ public class BatteryManager {
public static final int BATTERY_PLUGGED_AC = 1; public static final int BATTERY_PLUGGED_AC = 1;
/** Power source is a USB port. */ /** Power source is a USB port. */
public static final int BATTERY_PLUGGED_USB = 2; public static final int BATTERY_PLUGGED_USB = 2;
/** Power source is wireless. */
public static final int BATTERY_PLUGGED_WIRELESS = 4;
} }

View File

@@ -2071,6 +2071,9 @@ public abstract class BatteryStats implements Parcelable {
case BatteryManager.BATTERY_PLUGGED_USB: case BatteryManager.BATTERY_PLUGGED_USB:
pw.print("usb"); pw.print("usb");
break; break;
case BatteryManager.BATTERY_PLUGGED_WIRELESS:
pw.print("wireless");
break;
default: default:
pw.print(oldPlug); pw.print(oldPlug);
break; break;

View File

@@ -1147,6 +1147,7 @@ public final class Settings {
* <li>{@code 0} to never stay on while plugged in</li> * <li>{@code 0} to never stay on while plugged in</li>
* <li>{@link BatteryManager#BATTERY_PLUGGED_AC} to stay on for AC charger</li> * <li>{@link BatteryManager#BATTERY_PLUGGED_AC} to stay on for AC charger</li>
* <li>{@link BatteryManager#BATTERY_PLUGGED_USB} to stay on for USB charger</li> * <li>{@link BatteryManager#BATTERY_PLUGGED_USB} to stay on for USB charger</li>
* <li>{@link BatteryManager#BATTERY_PLUGGED_WIRELESS} to stay on for wireless charger</li>
* </ul> * </ul>
* These values can be OR-ed together. * These values can be OR-ed together.
*/ */

View File

@@ -259,7 +259,8 @@ public class KeyguardUpdateMonitor {
*/ */
boolean isPluggedIn() { boolean isPluggedIn() {
return plugged == BatteryManager.BATTERY_PLUGGED_AC return plugged == BatteryManager.BATTERY_PLUGGED_AC
|| plugged == BatteryManager.BATTERY_PLUGGED_USB; || plugged == BatteryManager.BATTERY_PLUGGED_USB
|| plugged == BatteryManager.BATTERY_PLUGGED_WIRELESS;
} }
/** /**

View File

@@ -93,6 +93,7 @@ public class BatteryService extends Binder {
private boolean mAcOnline; private boolean mAcOnline;
private boolean mUsbOnline; private boolean mUsbOnline;
private boolean mWirelessOnline;
private int mBatteryStatus; private int mBatteryStatus;
private int mBatteryHealth; private int mBatteryHealth;
private boolean mBatteryPresent; private boolean mBatteryPresent;
@@ -150,7 +151,8 @@ public class BatteryService extends Binder {
public final boolean isPowered() { public final boolean isPowered() {
// assume we are powered if battery state is unknown so the "stay on while plugged in" option will work. // assume we are powered if battery state is unknown so the "stay on while plugged in" option will work.
return (mAcOnline || mUsbOnline || mBatteryStatus == BatteryManager.BATTERY_STATUS_UNKNOWN); return (mAcOnline || mUsbOnline || mWirelessOnline
|| mBatteryStatus == BatteryManager.BATTERY_STATUS_UNKNOWN);
} }
public final boolean isPowered(int plugTypeSet) { public final boolean isPowered(int plugTypeSet) {
@@ -169,6 +171,9 @@ public class BatteryService extends Binder {
if (mUsbOnline) { if (mUsbOnline) {
plugTypeBit |= BatteryManager.BATTERY_PLUGGED_USB; plugTypeBit |= BatteryManager.BATTERY_PLUGGED_USB;
} }
if (mWirelessOnline) {
plugTypeBit |= BatteryManager.BATTERY_PLUGGED_WIRELESS;
}
return (plugTypeSet & plugTypeBit) != 0; return (plugTypeSet & plugTypeBit) != 0;
} }
@@ -243,6 +248,8 @@ public class BatteryService extends Binder {
mPlugType = BatteryManager.BATTERY_PLUGGED_AC; mPlugType = BatteryManager.BATTERY_PLUGGED_AC;
} else if (mUsbOnline) { } else if (mUsbOnline) {
mPlugType = BatteryManager.BATTERY_PLUGGED_USB; mPlugType = BatteryManager.BATTERY_PLUGGED_USB;
} else if (mWirelessOnline) {
mPlugType = BatteryManager.BATTERY_PLUGGED_WIRELESS;
} else { } else {
mPlugType = BATTERY_PLUGGED_NONE; mPlugType = BATTERY_PLUGGED_NONE;
} }
@@ -398,6 +405,7 @@ public class BatteryService extends Binder {
" temperature: " + mBatteryTemperature + " temperature: " + mBatteryTemperature +
" technology: " + mBatteryTechnology + " technology: " + mBatteryTechnology +
" AC powered:" + mAcOnline + " USB powered:" + mUsbOnline + " AC powered:" + mAcOnline + " USB powered:" + mUsbOnline +
" Wireless powered:" + mWirelessOnline +
" icon:" + icon + " invalid charger:" + mInvalidCharger); " icon:" + icon + " invalid charger:" + mInvalidCharger);
} }
@@ -503,6 +511,7 @@ public class BatteryService extends Binder {
pw.println("Current Battery Service state:"); pw.println("Current Battery Service state:");
pw.println(" AC powered: " + mAcOnline); pw.println(" AC powered: " + mAcOnline);
pw.println(" USB powered: " + mUsbOnline); pw.println(" USB powered: " + mUsbOnline);
pw.println(" Wireless powered: " + mWirelessOnline);
pw.println(" status: " + mBatteryStatus); pw.println(" status: " + mBatteryStatus);
pw.println(" health: " + mBatteryHealth); pw.println(" health: " + mBatteryHealth);
pw.println(" present: " + mBatteryPresent); pw.println(" present: " + mBatteryPresent);
@@ -523,6 +532,8 @@ public class BatteryService extends Binder {
mAcOnline = Integer.parseInt(value) != 0; mAcOnline = Integer.parseInt(value) != 0;
} else if ("usb".equals(key)) { } else if ("usb".equals(key)) {
mUsbOnline = Integer.parseInt(value) != 0; mUsbOnline = Integer.parseInt(value) != 0;
} else if ("wireless".equals(key)) {
mWirelessOnline = Integer.parseInt(value) != 0;
} else if ("status".equals(key)) { } else if ("status".equals(key)) {
mBatteryStatus = Integer.parseInt(value); mBatteryStatus = Integer.parseInt(value);
} else if ("level".equals(key)) { } else if ("level".equals(key)) {
@@ -603,4 +614,3 @@ public class BatteryService extends Binder {
} }
} }
} }

View File

@@ -42,6 +42,7 @@ struct FieldIds {
// members // members
jfieldID mAcOnline; jfieldID mAcOnline;
jfieldID mUsbOnline; jfieldID mUsbOnline;
jfieldID mWirelessOnline;
jfieldID mBatteryStatus; jfieldID mBatteryStatus;
jfieldID mBatteryHealth; jfieldID mBatteryHealth;
jfieldID mBatteryPresent; jfieldID mBatteryPresent;
@@ -71,6 +72,7 @@ static BatteryManagerConstants gConstants;
struct PowerSupplyPaths { struct PowerSupplyPaths {
char* acOnlinePath; char* acOnlinePath;
char* usbOnlinePath; char* usbOnlinePath;
char* wirelessOnlinePath;
char* batteryStatusPath; char* batteryStatusPath;
char* batteryHealthPath; char* batteryHealthPath;
char* batteryPresentPath; char* batteryPresentPath;
@@ -198,6 +200,7 @@ static void android_server_BatteryService_update(JNIEnv* env, jobject obj)
{ {
setBooleanField(env, obj, gPaths.acOnlinePath, gFieldIds.mAcOnline); setBooleanField(env, obj, gPaths.acOnlinePath, gFieldIds.mAcOnline);
setBooleanField(env, obj, gPaths.usbOnlinePath, gFieldIds.mUsbOnline); setBooleanField(env, obj, gPaths.usbOnlinePath, gFieldIds.mUsbOnline);
setBooleanField(env, obj, gPaths.wirelessOnlinePath, gFieldIds.mWirelessOnline);
setBooleanField(env, obj, gPaths.batteryPresentPath, gFieldIds.mBatteryPresent); setBooleanField(env, obj, gPaths.batteryPresentPath, gFieldIds.mBatteryPresent);
setIntField(env, obj, gPaths.batteryCapacityPath, gFieldIds.mBatteryLevel); setIntField(env, obj, gPaths.batteryCapacityPath, gFieldIds.mBatteryLevel);
@@ -260,6 +263,11 @@ int register_android_server_BatteryService(JNIEnv* env)
if (access(path, R_OK) == 0) if (access(path, R_OK) == 0)
gPaths.usbOnlinePath = strdup(path); gPaths.usbOnlinePath = strdup(path);
} }
else if (strcmp(buf, "Wireless") == 0) {
snprintf(path, sizeof(path), "%s/%s/online", POWER_SUPPLY_PATH, name);
if (access(path, R_OK) == 0)
gPaths.wirelessOnlinePath = strdup(path);
}
else if (strcmp(buf, "Battery") == 0) { else if (strcmp(buf, "Battery") == 0) {
snprintf(path, sizeof(path), "%s/%s/status", POWER_SUPPLY_PATH, name); snprintf(path, sizeof(path), "%s/%s/status", POWER_SUPPLY_PATH, name);
if (access(path, R_OK) == 0) if (access(path, R_OK) == 0)
@@ -307,6 +315,8 @@ int register_android_server_BatteryService(JNIEnv* env)
ALOGE("acOnlinePath not found"); ALOGE("acOnlinePath not found");
if (!gPaths.usbOnlinePath) if (!gPaths.usbOnlinePath)
ALOGE("usbOnlinePath not found"); ALOGE("usbOnlinePath not found");
if (!gPaths.wirelessOnlinePath)
ALOGE("wirelessOnlinePath not found");
if (!gPaths.batteryStatusPath) if (!gPaths.batteryStatusPath)
ALOGE("batteryStatusPath not found"); ALOGE("batteryStatusPath not found");
if (!gPaths.batteryHealthPath) if (!gPaths.batteryHealthPath)
@@ -331,6 +341,7 @@ int register_android_server_BatteryService(JNIEnv* env)
gFieldIds.mAcOnline = env->GetFieldID(clazz, "mAcOnline", "Z"); gFieldIds.mAcOnline = env->GetFieldID(clazz, "mAcOnline", "Z");
gFieldIds.mUsbOnline = env->GetFieldID(clazz, "mUsbOnline", "Z"); gFieldIds.mUsbOnline = env->GetFieldID(clazz, "mUsbOnline", "Z");
gFieldIds.mWirelessOnline = env->GetFieldID(clazz, "mWirelessOnline", "Z");
gFieldIds.mBatteryStatus = env->GetFieldID(clazz, "mBatteryStatus", "I"); gFieldIds.mBatteryStatus = env->GetFieldID(clazz, "mBatteryStatus", "I");
gFieldIds.mBatteryHealth = env->GetFieldID(clazz, "mBatteryHealth", "I"); gFieldIds.mBatteryHealth = env->GetFieldID(clazz, "mBatteryHealth", "I");
gFieldIds.mBatteryPresent = env->GetFieldID(clazz, "mBatteryPresent", "Z"); gFieldIds.mBatteryPresent = env->GetFieldID(clazz, "mBatteryPresent", "Z");
@@ -341,6 +352,7 @@ int register_android_server_BatteryService(JNIEnv* env)
LOG_FATAL_IF(gFieldIds.mAcOnline == NULL, "Unable to find BatteryService.AC_ONLINE_PATH"); LOG_FATAL_IF(gFieldIds.mAcOnline == NULL, "Unable to find BatteryService.AC_ONLINE_PATH");
LOG_FATAL_IF(gFieldIds.mUsbOnline == NULL, "Unable to find BatteryService.USB_ONLINE_PATH"); LOG_FATAL_IF(gFieldIds.mUsbOnline == NULL, "Unable to find BatteryService.USB_ONLINE_PATH");
LOG_FATAL_IF(gFieldIds.mWirelessOnline == NULL, "Unable to find BatteryService.WIRELESS_ONLINE_PATH");
LOG_FATAL_IF(gFieldIds.mBatteryStatus == NULL, "Unable to find BatteryService.BATTERY_STATUS_PATH"); LOG_FATAL_IF(gFieldIds.mBatteryStatus == NULL, "Unable to find BatteryService.BATTERY_STATUS_PATH");
LOG_FATAL_IF(gFieldIds.mBatteryHealth == NULL, "Unable to find BatteryService.BATTERY_HEALTH_PATH"); LOG_FATAL_IF(gFieldIds.mBatteryHealth == NULL, "Unable to find BatteryService.BATTERY_HEALTH_PATH");
LOG_FATAL_IF(gFieldIds.mBatteryPresent == NULL, "Unable to find BatteryService.BATTERY_PRESENT_PATH"); LOG_FATAL_IF(gFieldIds.mBatteryPresent == NULL, "Unable to find BatteryService.BATTERY_PRESENT_PATH");