GAP: Kill Bluetooth process in timeout cases

- In timeout cases BT process restart before complete cleanup
  in lower layers results in generation of ANR.

- This patch will kill Bluetooth process in timeout
  cases and handle timeouts properly.

CRs-Fixed: 2461289
Change-Id: I513e8509db5b96a494b44159587be938af54a740
diff --git a/src/com/android/bluetooth/btservice/AdapterState.java b/src/com/android/bluetooth/btservice/AdapterState.java
index 16e7633..46d8297 100644
--- a/src/com/android/bluetooth/btservice/AdapterState.java
+++ b/src/com/android/bluetooth/btservice/AdapterState.java
@@ -191,6 +191,11 @@
                     transitionTo(mTurningBleOnState);
                     break;
 
+                case BT_FORCEKILL_TIMEOUT:
+                    errorLog("Killing the process to force a restart as part of cleanup");
+                    android.os.Process.killProcess(android.os.Process.myPid());
+                    break;
+
                 default:
                     infoLog("Unhandled message - " + messageString(msg.what));
                     return false;
@@ -217,6 +222,12 @@
                     transitionTo(mTurningBleOffState);
                     break;
 
+                case BT_FORCEKILL_TIMEOUT:
+                    transitionTo(mOffState);
+                    errorLog("Killing the process to force a restart as part of cleanup");
+                    android.os.Process.killProcess(android.os.Process.myPid());
+                    break;
+
                 default:
                     infoLog("Unhandled message - " + messageString(msg.what));
                     return false;
@@ -239,6 +250,12 @@
                     transitionTo(mTurningOffState);
                     break;
 
+                case BT_FORCEKILL_TIMEOUT:
+                    transitionTo(mOffState);
+                    errorLog("Killing the process to force a restart as part of cleanup");
+                    android.os.Process.killProcess(android.os.Process.myPid());
+                    break;
+
                 default:
                     infoLog("Unhandled message - " + messageString(msg.what));
                     return false;