summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKiran Kelageri <kkelageri@codeaurora.org>2014-12-05 17:03:03 -0800
committerKiran Kelageri <kkelageri@codeaurora.org>2015-02-10 17:45:39 -0800
commit1d825bc3ebb3371a8a30f2953898baaaf1384757 (patch)
tree4eacef08f0f0ad834a132a2b2c141bb12ed85bf7 /src
parent3e909e6e2edace7ec9a8a9f7b9f1f70295d59cb8 (diff)
downloadandroid_packages_apps_BluetoothExt-1d825bc3ebb3371a8a30f2953898baaaf1384757.tar.gz
android_packages_apps_BluetoothExt-1d825bc3ebb3371a8a30f2953898baaaf1384757.tar.bz2
android_packages_apps_BluetoothExt-1d825bc3ebb3371a8a30f2953898baaaf1384757.zip
Bluetooh-Wipower: Fix for delayed advertisments.
Creating a seperate handler to handle advertisment messages i.e. start or stop advertisements, this also minimizes the delays caused in advertising during single thread. Change-Id: I366758bb5a81f7f439234946dbddd83889c849bc CRs-fixed: 759654
Diffstat (limited to 'src')
-rw-r--r--src/org/codeaurora/bluetooth/a4wp/A4wpService.java43
1 files changed, 42 insertions, 1 deletions
diff --git a/src/org/codeaurora/bluetooth/a4wp/A4wpService.java b/src/org/codeaurora/bluetooth/a4wp/A4wpService.java
index 46eea06..71becac 100644
--- a/src/org/codeaurora/bluetooth/a4wp/A4wpService.java
+++ b/src/org/codeaurora/bluetooth/a4wp/A4wpService.java
@@ -59,6 +59,10 @@ import android.wipower.WipowerManager.PowerLevel;
import android.wipower.WipowerDynamicParam;
import com.quicinc.wbc.WbcManager;
import com.quicinc.wbc.WbcTypes;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.Looper;
+import android.os.Message;
import android.bluetooth.le.AdvertiseCallback;
import android.bluetooth.le.AdvertiseSettings;
@@ -80,6 +84,11 @@ public class A4wpService extends Service
private BluetoothDevice mDevice = null;
private PowerManager.WakeLock mWakeLock = null;
+ // Advertising variables
+ private final static int START_ADVERTISING = 1;
+ private final static int STOP_ADVERTISING = 0;
+ private WipowerAdvHandler mHandler;
+
private static final UUID A4WP_SERVICE_UUID = UUID.fromString("6455fffe-a146-11e2-9e96-0800200c9a67");
//PRU writes
private static final UUID A4WP_PRU_CTRL_UUID = UUID.fromString("6455e670-a146-11e2-9e96-0800200c9a67");
@@ -143,6 +152,25 @@ public class A4wpService extends Service
private AdvertiseCallback mAdvertiseCallback = new myAdvertiseCallback(1);
ParcelUuid uuid1 = ParcelUuid.fromString("6455fffe-a146-11e2-9e96-0800200c9a67");
+ // Handler to maintain advertisement messages
+ private final class WipowerAdvHandler extends Handler {
+ private WipowerAdvHandler(Looper looper) {
+ super(looper);
+ }
+
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case START_ADVERTISING:
+ StartAdvertising();
+ break;
+ case STOP_ADVERTISING:
+ stopAdvertising();
+ break;
+ }
+ }
+ }
+
private WbcManager.WbcEventListener mWbcCallback = new WbcManager.WbcEventListener() {
@Override
@@ -564,7 +592,9 @@ public class A4wpService extends Service
Log.v(LOGTAG, "onPowerApply" + state);
if (state == PowerApplyEvent.ON) {
Log.v(LOGTAG, "StartAdvertising");
- StartAdvertising();
+ Message msg = mHandler.obtainMessage(START_ADVERTISING);
+ mHandler.sendMessage(msg);
+
} else {
if (mBluetoothGattServer != null && mDevice != null) {
Log.v(LOGTAG, "onPowerApply " + state + "dropping Connection");
@@ -883,6 +913,11 @@ public class A4wpService extends Service
Log.v(LOGTAG, "onCreate: charge complete " + mChargeComplete);
mWbcManager.register(mWbcCallback);
}
+ // Starting a thread to handle the advertising
+ HandlerThread thread = new HandlerThread("WipowerAdvHandler");
+ thread.start();
+ Looper looper = thread.getLooper();
+ mHandler = new WipowerAdvHandler(looper);
}
@Override
@@ -892,6 +927,12 @@ public class A4wpService extends Service
mWipowerManager.unregisterCallback(mWipowerCallback);
if (mWbcManager != null)
mWbcManager.unregister(mWbcCallback);
+
+ // Clear thread on destroy
+ Looper looper = mHandler.getLooper();
+ if (looper != null) {
+ looper.quit();
+ }
}
@Override