diff options
author | Umesh Vats <uvats@codeaurora.org> | 2015-02-04 17:11:43 -0800 |
---|---|---|
committer | Kiran Kelageri <kkelageri@codeaurora.org> | 2015-02-23 15:14:52 -0800 |
commit | 732ba3f7bd1b3430a0f58d93f05f3246e230aaf5 (patch) | |
tree | d831406004fa359935c8a9accf0d2226a012181e /src | |
parent | 82e0e8595457a47d5ef1a517f1156508a91efc43 (diff) | |
download | android_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.java | 37 |
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); } |