summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorUmesh Vats <uvats@codeaurora.org>2015-02-04 17:11:43 -0800
committerKiran Kelageri <kkelageri@codeaurora.org>2015-02-23 15:14:52 -0800
commit732ba3f7bd1b3430a0f58d93f05f3246e230aaf5 (patch)
treed831406004fa359935c8a9accf0d2226a012181e /src
parent82e0e8595457a47d5ef1a517f1156508a91efc43 (diff)
downloadandroid_packages_apps_BluetoothExt-732ba3f7bd1b3430a0f58d93f05f3246e230aaf5.tar.gz
android_packages_apps_BluetoothExt-732ba3f7bd1b3430a0f58d93f05f3246e230aaf5.tar.bz2
android_packages_apps_BluetoothExt-732ba3f7bd1b3430a0f58d93f05f3246e230aaf5.zip
Bluetooth-Wipower:PRU re-enables Charge port after disabling.
PRU enables the charge port whenever the dynamic paramters are non zero and vrect > vmin. Now additional check is added. PRU will enable charge port only if PTU requests to do so. Change-Id: Ifb3d3d1beefc28750d711c7572949abe3a183e8f CRs-fixed: 788178
Diffstat (limited to 'src')
-rw-r--r--src/org/codeaurora/bluetooth/a4wp/A4wpService.java37
1 files changed, 26 insertions, 11 deletions
diff --git a/src/org/codeaurora/bluetooth/a4wp/A4wpService.java b/src/org/codeaurora/bluetooth/a4wp/A4wpService.java
index be3e5cb..8235b19 100644
--- a/src/org/codeaurora/bluetooth/a4wp/A4wpService.java
+++ b/src/org/codeaurora/bluetooth/a4wp/A4wpService.java
@@ -159,6 +159,7 @@ public class A4wpService extends Service
private static boolean mWipowerBoot = false;
private static boolean isChargePortSet = false;
static boolean mChargeComplete = true;
+ static boolean mOutputControl = true;
private AdvertiseSettings mAdvertiseSettings;
private AdvertiseData mAdvertisementData;
@@ -211,11 +212,17 @@ public class A4wpService extends Service
if (mWakeLock == null) {
PowerManager pm = (PowerManager)getSystemService(
Context.POWER_SERVICE);
+ if (pm == null) {
+ Log.e(LOGTAG, "failed to get PM");
+ return;
+ }
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
"StartingWipowerConnection");
mWakeLock.setReferenceCounted(false);
mWakeLock.acquire();
Log.w(LOGTAG, "Acquire Wake Lock");
+ } else {
+ Log.w(LOGTAG, "Wake Lock already held");
}
} else {
if (mWakeLock != null) {
@@ -523,26 +530,29 @@ public class A4wpService extends Service
if (control.getEnablePruOutput()) {
Log.v(LOGTAG, "do Enable PruOutPut");
/* Wake lock is enabled by default, to disbale need to set property */
- if(SystemProperties.getBoolean("persist.a4wp.skip_connection_wakelock", false) == false) {
+ if(SystemProperties.getBoolean("persist.a4wp.skipwakelock", false) == false) {
/* Hold wake lock during connection */
acquire_wake_lock(true);
}
- Log.v(LOGTAG, "StopAdvertising on connect");
- Message msg = mHandler.obtainMessage(STOP_ADVERTISING);
- mHandler.sendMessage(msg);
- mWipowerManager.enableAlertNotification(false);
- mWipowerManager.enableDataNotification(true);
+ if (mOutputControl == true) {
+ Log.v(LOGTAG, "StopAdvertising on connect");
+ Message msg = mHandler.obtainMessage(STOP_ADVERTISING);
+ mHandler.sendMessage(msg);
+ mWipowerManager.enableAlertNotification(false);
+ mWipowerManager.enableDataNotification(true);
+ }
+ mOutputControl = true;
} else {
Log.v(LOGTAG, "do Disable PruOutPut");
if (mChargeComplete == true) {
mWipowerManager.enablePowerApply(true, true, true);
}
mWipowerManager.stopCharging();
- mWipowerManager.enableDataNotification(false);
- if(SystemProperties.getBoolean("persist.a4wp.skip_connection_wakelock", false) == false) {
+ if(SystemProperties.getBoolean("persist.a4wp.skipwakelock", false) == false) {
acquire_wake_lock(false);
}
isChargePortSet = false;
+ mOutputControl = false;
return status;
}
@@ -688,7 +698,7 @@ public class A4wpService extends Service
if (mChargeComplete != true) {
mWipowerManager.enablePowerApply(true, true, false);
}
- if(SystemProperties.getBoolean("persist.a4wp.skip_connection_wakelock", false) == false) {
+ if(SystemProperties.getBoolean("persist.a4wp.skipwakelock", false) == false) {
/* Drop wake lock once the connection is dropped gracefully */
acquire_wake_lock(false);
}
@@ -735,7 +745,7 @@ public class A4wpService extends Service
if (!isChargePortSet) {
VRECT_DYN = (short)toUnsigned(value[VRECT_LSB]);
VRECT_DYN |= (short)(toUnsigned(value[VRECT_MSB]) << 8);
- if (DEFAULT_VRECT_MIN <= VRECT_DYN) {
+ if (DEFAULT_VRECT_MIN <= VRECT_DYN && mOutputControl) {
mWipowerManager.startCharging();
isChargePortSet = true;
}
@@ -770,6 +780,7 @@ public class A4wpService extends Service
/* Initiate a dummy connection such that on stop advertisment
the advetisment instances are cleared properly */
mBluetoothGattServer.connect(mDevice, false);
+ mOutputControl = true;
}
else if (id == A4WP_PRU_DYNAMIC_UUID) {
if (mPruDynamicParam == null) {
@@ -975,6 +986,10 @@ public class A4wpService extends Service
mWipowerManager.unregisterCallback(mWipowerCallback);
if (mWbcManager != null)
mWbcManager.unregister(mWbcCallback);
+ if(SystemProperties.getBoolean("persist.a4wp.skipwakelock", false) == false) {
+ //release wake lock during BT-OFF.
+ acquire_wake_lock(false);
+ }
// Clear thread on destroy
Looper looper = mHandler.getLooper();
@@ -1001,7 +1016,7 @@ public class A4wpService extends Service
mWipowerManager.enablePowerApply(true, true, false);
}
}
- if(SystemProperties.getBoolean("persist.a4wp.skip_connection_wakelock", false) == false) {
+ if(SystemProperties.getBoolean("persist.a4wp.skipwakelock", false) == false) {
//release wake lock in case if held during crashes or on BT restart.
acquire_wake_lock(false);
}