summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSungjun Park <sjpark@codeaurora.org>2015-06-10 15:55:37 -0700
committerSungjun Park <sjpark@codeaurora.org>2015-07-14 16:28:40 -0700
commit33146d4bc84df1c1e493ef165da7a9ae77dfd3ae (patch)
treed7cce8aa91078c0814a936e09a60e54153972688
parente8a5ed9e98ee50c629462d640412148812ce6d9a (diff)
downloadandroid_hardware_qcom_bt-33146d4bc84df1c1e493ef165da7a9ae77dfd3ae.tar.gz
android_hardware_qcom_bt-33146d4bc84df1c1e493ef165da7a9ae77dfd3ae.tar.bz2
android_hardware_qcom_bt-33146d4bc84df1c1e493ef165da7a9ae77dfd3ae.zip
Bluetooth: Add system permission for wcnss_filter
Once build is complied as user-debug, system permission will be given to wcnss_filter service to support kernel panic. Change-Id: I2a92bde829a60bbf2dc7babfced89ce8addeb7e8
-rw-r--r--libbt-vendor/Android.mk4
-rw-r--r--libbt-vendor/src/bt_vendor_qcom.c17
2 files changed, 16 insertions, 5 deletions
diff --git a/libbt-vendor/Android.mk b/libbt-vendor/Android.mk
index 3414909..c959b9f 100644
--- a/libbt-vendor/Android.mk
+++ b/libbt-vendor/Android.mk
@@ -39,6 +39,10 @@ ifeq ($(BOARD_HAS_QCA_BT_ROME),true)
LOCAL_CFLAGS += -DBT_SOC_TYPE_ROME
endif
+ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
+LOCAL_CFLAGS += -DPANIC_ON_SOC_CRASH
+endif
+
LOCAL_C_INCLUDES += \
$(LOCAL_PATH)/include \
$(BDROID_DIR)/hci/include \
diff --git a/libbt-vendor/src/bt_vendor_qcom.c b/libbt-vendor/src/bt_vendor_qcom.c
index e52312d..b8b66ae 100644
--- a/libbt-vendor/src/bt_vendor_qcom.c
+++ b/libbt-vendor/src/bt_vendor_qcom.c
@@ -42,6 +42,12 @@
#define WAIT_TIMEOUT 200000
+#ifdef PANIC_ON_SOC_CRASH
+#define BT_VND_FILTER_START "wc_transport.start_root"
+#else
+#define BT_VND_FILTER_START "wc_transport.start_hci"
+#endif
+
/******************************************************************************
** Externs
******************************************************************************/
@@ -258,14 +264,14 @@ void stop_hci_filter() {
char value[PROPERTY_VALUE_MAX] = {'\0'};
ALOGV("%s: Entry ", __func__);
- property_get("wc_transport.start_hci", value, "false");
+ property_get(BT_VND_FILTER_START, value, "false");
if (strcmp(value, "false") == 0) {
ALOGI("%s: hci_filter has been stopped already", __func__);
// return;
}
- property_set("wc_transport.start_hci", "false");
+ property_set(BT_VND_FILTER_START, "false");
property_set("wc_transport.hci_filter_status", "0");
ALOGV("%s: Exit ", __func__);
}
@@ -275,8 +281,7 @@ void start_hci_filter() {
int i, init_success = 0;
char value[PROPERTY_VALUE_MAX] = {'\0'};
-
- property_get("wc_transport.start_hci", value, false);
+ property_get(BT_VND_FILTER_START, value, false);
if (strcmp(value, "true") == 0) {
ALOGI("%s: hci_filter has been started already", __func__);
@@ -284,8 +289,10 @@ void start_hci_filter() {
}
property_set("wc_transport.hci_filter_status", "0");
+ property_set(BT_VND_FILTER_START, "true");
+
+ ALOGV("%s: %s set to true ", __func__, BT_VND_FILTER_START );
- property_set("wc_transport.start_hci", "true");
//sched_yield();
for(i=0; i<45; i++) {
property_get("wc_transport.hci_filter_status", value, "0");