diff options
author | Kiran Kelageri <kkelageri@codeaurora.org> | 2014-12-05 17:03:03 -0800 |
---|---|---|
committer | Kiran Kelageri <kkelageri@codeaurora.org> | 2015-02-10 17:45:39 -0800 |
commit | 1d825bc3ebb3371a8a30f2953898baaaf1384757 (patch) | |
tree | 4eacef08f0f0ad834a132a2b2c141bb12ed85bf7 /src | |
parent | 3e909e6e2edace7ec9a8a9f7b9f1f70295d59cb8 (diff) | |
download | android_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.java | 43 |
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 |