summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Arseneau <earseneau@google.com>2022-06-21 02:06:31 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2022-06-21 02:06:31 +0000
commitc2896ddc742aac8fc818eaaab3aadd2a3023807a (patch)
tree8696cbbde699755ebba4081c8835134dae957761
parentd951eb6783d4587459f0e2c250002ebadcaee272 (diff)
parent372cffc99ef9d9d895a8a60f60269919748d7096 (diff)
Merge "Bluetooth: Fix BT on failure during BT ON/OFF stress test" into s-keystone-qcom-dev
-rw-r--r--services/core/java/com/android/server/BluetoothManagerService.java26
1 files changed, 15 insertions, 11 deletions
diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java
index 806ea95424a7..1ed5840c4ab4 100644
--- a/services/core/java/com/android/server/BluetoothManagerService.java
+++ b/services/core/java/com/android/server/BluetoothManagerService.java
@@ -2031,9 +2031,10 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
case MESSAGE_ENABLE:
int quietEnable = msg.arg1;
int isBle = msg.arg2;
+ Slog.d(TAG, "MESSAGE_ENABLE: isBle: " + isBle + " msg.obj : " + msg.obj);
if (mHandler.hasMessages(MESSAGE_HANDLE_DISABLE_DELAYED)
|| mHandler.hasMessages(MESSAGE_HANDLE_ENABLE_DELAYED)) {
- if (msg.arg2 == 0) {
+ if (msg.obj == null) {
int delay = ENABLE_DISABLE_DELAY_MS;
if (mHandler.hasMessages(MESSAGE_DISABLE)) {
@@ -2044,11 +2045,11 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
mHandler.removeMessages(MESSAGE_ENABLE);
// We are handling enable or disable right now, wait for it.
mHandler.sendMessageDelayed(mHandler.obtainMessage(
- MESSAGE_ENABLE, quietEnable, 1), delay);
+ MESSAGE_ENABLE, quietEnable, isBle, 1), delay);
Slog.d(TAG, "Queue new MESSAGE_ENABLE");
} else {
mHandler.sendMessageDelayed(mHandler.obtainMessage(
- MESSAGE_ENABLE, quietEnable, 1), ENABLE_DISABLE_DELAY_MS);
+ MESSAGE_ENABLE, quietEnable, isBle, 1), ENABLE_DISABLE_DELAY_MS);
Slog.d(TAG, "Re-Queue previous MESSAGE_ENABLE");
if (mHandler.hasMessages(MESSAGE_DISABLE)) {
// Ensure the original order of just entering the queue
@@ -2060,10 +2061,10 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
}
}
break;
- } else if(msg.arg2 == 0 && mHandler.hasMessages(MESSAGE_DISABLE)) {
+ } else if(msg.obj == null && mHandler.hasMessages(MESSAGE_DISABLE)) {
mHandler.removeMessages(MESSAGE_ENABLE);
mHandler.sendMessageDelayed(mHandler.obtainMessage(
- MESSAGE_ENABLE, quietEnable, 1), ENABLE_DISABLE_DELAY_MS * 2);
+ MESSAGE_ENABLE, quietEnable, isBle, 1), ENABLE_DISABLE_DELAY_MS * 2);
Slog.d(TAG, "MESSAGE_DISABLE exist. Queue new MESSAGE_ENABLE");
break;
}
@@ -2088,11 +2089,14 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
int state = mBluetooth.getState();
switch (state) {
case BluetoothAdapter.STATE_BLE_ON:
- if (isBle == 1) {
- Slog.i(TAG, "Already at BLE_ON State");
- } else {
- Slog.w(TAG, "BT Enable in BLE_ON State, going to ON");
+ if (isBluetoothPersistedStateOnBluetooth() ||
+ mEnableExternal) {
+ Slog.w(TAG, "BLE_ON State:Enable from Settings or" +
+ "BT on persisted, going to ON");
mBluetooth.onLeServiceUp(mContext.getAttributionSource());
+ } else if (isBle == 1) {
+ Slog.w(TAG, "BLE_ON State:Queued enable from ble app," +
+ " stay in ble on");
}
break;
case BluetoothAdapter.STATE_BLE_TURNING_ON:
@@ -2165,8 +2169,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
// if MESSAGE_DISABLE present
mHandler.removeMessages(MESSAGE_ENABLE);
mHandler.sendMessageDelayed(mHandler.obtainMessage(
- MESSAGE_ENABLE, mQuietEnableExternal ? 1: 0, 1),
- ENABLE_DISABLE_DELAY_MS * 2);
+ MESSAGE_ENABLE, mQuietEnableExternal ? 1: 0,
+ mEnableExternal ? 0:1, 1), ENABLE_DISABLE_DELAY_MS * 2);
Slog.d(TAG, "Re-Queue previous MESSAGE_ENABLE");
}
}