Bluetooth: Remove scheduler-service dependency

Bug: 38178265
Test: Bluetooth enable/disable
      adb shell stop && adb shell VtsHalBluetoothV1_TargetTest

Change-Id: I7f892bad73f72b46b7b1720bda267fdddad21948
diff --git a/bluetooth/1.0/default/Android.bp b/bluetooth/1.0/default/Android.bp
index 46a4987..31a2641 100644
--- a/bluetooth/1.0/default/Android.bp
+++ b/bluetooth/1.0/default/Android.bp
@@ -24,7 +24,6 @@
         "vendor_interface.cc",
     ],
     shared_libs: [
-        "android.frameworks.schedulerservice@1.0",
         "android.hardware.bluetooth@1.0",
         "libbase",
         "libcutils",
@@ -49,7 +48,6 @@
     ],
     export_include_dirs: ["."],
     shared_libs: [
-        "android.frameworks.schedulerservice@1.0",
         "liblog",
     ],
 }
@@ -86,7 +84,6 @@
         "test",
     ],
     shared_libs: [
-        "android.frameworks.schedulerservice@1.0",
         "libbase",
         "libhidlbase",
         "liblog",
diff --git a/bluetooth/1.0/default/Android.mk b/bluetooth/1.0/default/Android.mk
index 2dcb067..38294c7 100644
--- a/bluetooth/1.0/default/Android.mk
+++ b/bluetooth/1.0/default/Android.mk
@@ -35,6 +35,5 @@
   libhidlbase \
   libhidltransport \
   android.hardware.bluetooth@1.0 \
-  android.frameworks.schedulerservice@1.0\
 
 include $(BUILD_EXECUTABLE)
diff --git a/bluetooth/1.0/default/async_fd_watcher.cc b/bluetooth/1.0/default/async_fd_watcher.cc
index ab8d555..bc0bc92 100644
--- a/bluetooth/1.0/default/async_fd_watcher.cc
+++ b/bluetooth/1.0/default/async_fd_watcher.cc
@@ -30,8 +30,6 @@
 #include "sys/select.h"
 #include "unistd.h"
 
-#include <android/frameworks/schedulerservice/1.0/ISchedulingPolicyService.h>
-
 static const int INVALID_FD = -1;
 
 static const int BT_RT_PRIORITY = 1;
@@ -119,19 +117,12 @@
 }
 
 void AsyncFdWatcher::ThreadRoutine() {
-  using ::android::frameworks::schedulerservice::V1_0::ISchedulingPolicyService;
-  using ::android::hardware::Return;
-  sp<ISchedulingPolicyService> manager = ISchedulingPolicyService::getService();
-  if (manager == nullptr) {
-    ALOGE("%s: Couldn't get scheduler manager to set SCHED_FIFO.", __func__);
-  } else {
-    Return<bool> ret = manager->requestPriority(getpid(),
-                                                gettid(),
-                                                BT_RT_PRIORITY);
-    if (!ret.isOk() || !ret) {
-      ALOGE("%s unable to set SCHED_FIFO for pid %d, tid %d", __func__,
-            getpid(), gettid());
-    }
+  // Make watching thread RT.
+  struct sched_param rt_params;
+  rt_params.sched_priority = BT_RT_PRIORITY;
+  if (sched_setscheduler(gettid(), SCHED_FIFO, &rt_params)) {
+    ALOGE("%s unable to set SCHED_FIFO for pid %d, tid %d, error %s", __func__,
+          getpid(), gettid(), strerror(errno));
   }
 
   while (running_) {
diff --git a/bluetooth/1.0/default/service.cpp b/bluetooth/1.0/default/service.cpp
index a588c37..3a7aad0 100644
--- a/bluetooth/1.0/default/service.cpp
+++ b/bluetooth/1.0/default/service.cpp
@@ -20,8 +20,8 @@
 
 #include <hidl/LegacySupport.h>
 
-// Add an extra thread for calls to the scheduler service.
-static const size_t kMaxThreads = 2;
+// Extra threads make priority inheritance faster.
+static const size_t kMaxThreads = 5;
 
 // Generated HIDL files
 using android::hardware::bluetooth::V1_0::IBluetoothHci;