sanders: enable binderized bluetooth
This commit is contained in:
@@ -196,5 +196,23 @@
|
|||||||
<instance>default</instance>
|
<instance>default</instance>
|
||||||
</interface>
|
</interface>
|
||||||
</hal>
|
</hal>
|
||||||
|
<hal format="hidl">
|
||||||
|
<name>android.hardware.bluetooth</name>
|
||||||
|
<transport>hwbinder</transport>
|
||||||
|
<version>1.0</version>
|
||||||
|
<interface>
|
||||||
|
<name>IBluetoothHci</name>
|
||||||
|
<instance>default</instance>
|
||||||
|
</interface>
|
||||||
|
</hal>
|
||||||
|
<hal format="hidl">
|
||||||
|
<name>com.qualcomm.qti.bluetooth_audio</name>
|
||||||
|
<transport>hwbinder</transport>
|
||||||
|
<version>1.0</version>
|
||||||
|
<interface>
|
||||||
|
<name>IBluetoothAudio</name>
|
||||||
|
<instance>default</instance>
|
||||||
|
</interface>
|
||||||
|
</hal>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
||||||
|
|||||||
@@ -98,7 +98,8 @@ PRODUCT_COPY_FILES += \
|
|||||||
# Bluetooth
|
# Bluetooth
|
||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += \
|
||||||
libbt-vendor \
|
libbt-vendor \
|
||||||
android.hardware.bluetooth@1.0-impl
|
android.hardware.bluetooth@1.0-impl \
|
||||||
|
android.hardware.bluetooth@1.0-service
|
||||||
|
|
||||||
# Camera
|
# Camera
|
||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += \
|
||||||
|
|||||||
@@ -34,14 +34,6 @@ LOCAL_SRC_FILES := etc/wlan_carrier_bin.sh
|
|||||||
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
|
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
|
||||||
include $(BUILD_PREBUILT)
|
include $(BUILD_PREBUILT)
|
||||||
|
|
||||||
include $(CLEAR_VARS)
|
|
||||||
LOCAL_MODULE := init.qcom.bt.sh
|
|
||||||
LOCAL_MODULE_TAGS := optional eng
|
|
||||||
LOCAL_MODULE_CLASS := ETC
|
|
||||||
LOCAL_SRC_FILES := etc/init.qcom.bt.sh
|
|
||||||
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)
|
|
||||||
include $(BUILD_PREBUILT)
|
|
||||||
|
|
||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
LOCAL_MODULE := init.qcom.fm.sh
|
LOCAL_MODULE := init.qcom.fm.sh
|
||||||
LOCAL_MODULE_TAGS := optional eng
|
LOCAL_MODULE_TAGS := optional eng
|
||||||
|
|||||||
@@ -1,351 +0,0 @@
|
|||||||
#!/system/bin/sh
|
|
||||||
# Copyright (c) 2009-2013, The Linux Foundation. All rights reserved.
|
|
||||||
#
|
|
||||||
# Redistribution and use in source and binary forms, with or without
|
|
||||||
# modification, are permitted provided that the following conditions are met:
|
|
||||||
# * Redistributions of source code must retain the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer.
|
|
||||||
# * Redistributions in binary form must reproduce the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer in the
|
|
||||||
# documentation and/or other materials provided with the distribution.
|
|
||||||
# * Neither the name of The Linux Foundation nor
|
|
||||||
# the names of its contributors may be used to endorse or promote
|
|
||||||
# products derived from this software without specific prior written
|
|
||||||
# permission.
|
|
||||||
#
|
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
||||||
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
||||||
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
||||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
|
||||||
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
||||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
||||||
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
||||||
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
#
|
|
||||||
|
|
||||||
#Read the arguments passed to the script
|
|
||||||
config="$1"
|
|
||||||
|
|
||||||
BLUETOOTH_SLEEP_PATH=/proc/bluetooth/sleep/proto
|
|
||||||
LOG_TAG="qcom-bluetooth"
|
|
||||||
LOG_NAME="${0}:"
|
|
||||||
|
|
||||||
hciattach_pid=""
|
|
||||||
|
|
||||||
loge ()
|
|
||||||
{
|
|
||||||
/system/bin/log -t $LOG_TAG -p e "$LOG_NAME $@"
|
|
||||||
}
|
|
||||||
|
|
||||||
logi ()
|
|
||||||
{
|
|
||||||
/system/bin/log -t $LOG_TAG -p i "$LOG_NAME $@"
|
|
||||||
}
|
|
||||||
|
|
||||||
failed ()
|
|
||||||
{
|
|
||||||
loge "$1: exit code $2"
|
|
||||||
exit $2
|
|
||||||
}
|
|
||||||
|
|
||||||
program_bdaddr ()
|
|
||||||
{
|
|
||||||
/system/bin/btnvtool -O
|
|
||||||
logi "Bluetooth Address programmed successfully"
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# enable bluetooth profiles dynamically
|
|
||||||
#
|
|
||||||
config_bt ()
|
|
||||||
{
|
|
||||||
baseband=`getprop ro.baseband`
|
|
||||||
target=`getprop ro.board.platform`
|
|
||||||
if [ -f /sys/devices/soc0/soc_id ]; then
|
|
||||||
soc_hwid=`cat /sys/devices/soc0/soc_id`
|
|
||||||
else
|
|
||||||
soc_hwid=`cat /sys/devices/system/soc/soc0/id`
|
|
||||||
fi
|
|
||||||
btsoc=`getprop qcom.bluetooth.soc`
|
|
||||||
|
|
||||||
case $baseband in
|
|
||||||
"apq")
|
|
||||||
setprop ro.qualcomm.bluetooth.opp true
|
|
||||||
setprop ro.qualcomm.bluetooth.ftp true
|
|
||||||
setprop ro.qualcomm.bluetooth.nap false
|
|
||||||
setprop ro.bluetooth.sap false
|
|
||||||
setprop ro.bluetooth.dun false
|
|
||||||
# For MPQ as baseband is same for both
|
|
||||||
case $soc_hwid in
|
|
||||||
"130")
|
|
||||||
setprop ro.qualcomm.bluetooth.hsp true
|
|
||||||
setprop ro.qualcomm.bluetooth.hfp true
|
|
||||||
setprop ro.qualcomm.bluetooth.pbap false
|
|
||||||
setprop ro.qualcomm.bluetooth.map false
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
setprop ro.qualcomm.bluetooth.hsp false
|
|
||||||
setprop ro.qualcomm.bluetooth.hfp false
|
|
||||||
setprop ro.qualcomm.bluetooth.pbap true
|
|
||||||
setprop ro.qualcomm.bluetooth.map true
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
"mdm" | "svlte2a" | "svlte1" | "csfb")
|
|
||||||
setprop ro.qualcomm.bluetooth.opp true
|
|
||||||
setprop ro.qualcomm.bluetooth.hfp true
|
|
||||||
setprop ro.qualcomm.bluetooth.hsp true
|
|
||||||
setprop ro.qualcomm.bluetooth.pbap true
|
|
||||||
setprop ro.qualcomm.bluetooth.ftp true
|
|
||||||
setprop ro.qualcomm.bluetooth.map true
|
|
||||||
setprop ro.qualcomm.bluetooth.nap true
|
|
||||||
setprop ro.bluetooth.sap true
|
|
||||||
case $target in
|
|
||||||
"apq8084")
|
|
||||||
setprop ro.bluetooth.dun true
|
|
||||||
logi "Enabling BT-DUN for APQ8084"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
setprop ro.bluetooth.dun false
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
"msm")
|
|
||||||
setprop ro.qualcomm.bluetooth.opp true
|
|
||||||
setprop ro.qualcomm.bluetooth.hfp true
|
|
||||||
setprop ro.qualcomm.bluetooth.hsp true
|
|
||||||
setprop ro.qualcomm.bluetooth.pbap true
|
|
||||||
setprop ro.qualcomm.bluetooth.ftp true
|
|
||||||
setprop ro.qualcomm.bluetooth.nap true
|
|
||||||
setprop ro.bluetooth.sap true
|
|
||||||
setprop ro.bluetooth.dun true
|
|
||||||
case $btsoc in
|
|
||||||
"ath3k")
|
|
||||||
setprop ro.qualcomm.bluetooth.map false
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
setprop ro.qualcomm.bluetooth.map true
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
setprop ro.qualcomm.bluetooth.opp true
|
|
||||||
setprop ro.qualcomm.bluetooth.hfp true
|
|
||||||
setprop ro.qualcomm.bluetooth.hsp true
|
|
||||||
setprop ro.qualcomm.bluetooth.pbap true
|
|
||||||
setprop ro.qualcomm.bluetooth.ftp true
|
|
||||||
setprop ro.qualcomm.bluetooth.map true
|
|
||||||
setprop ro.qualcomm.bluetooth.nap true
|
|
||||||
setprop ro.bluetooth.sap true
|
|
||||||
setprop ro.bluetooth.dun true
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
#Enable Bluetooth Profiles specific to target Dynamically
|
|
||||||
case $target in
|
|
||||||
"msm8960")
|
|
||||||
if [ "$btsoc" != "ath3k" ] && [ "$soc_hwid" != "130" ]
|
|
||||||
then
|
|
||||||
setprop ro.bluetooth.hfp.ver 1.6
|
|
||||||
setprop ro.qualcomm.bt.hci_transport smd
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
"msm8974" | "msm8226" | "msm8610" | "msm8916" | "msm8909" | "msm8952" | "msm8937" | "msm8953" )
|
|
||||||
if [ "$btsoc" != "ath3k" ]
|
|
||||||
then
|
|
||||||
setprop ro.bluetooth.hfp.ver 1.7
|
|
||||||
setprop ro.qualcomm.bt.hci_transport smd
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
"apq8084" | "mpq8092" | "msm8994" | "msm8992" )
|
|
||||||
if [ "$btsoc" != "rome" ]
|
|
||||||
then
|
|
||||||
setprop ro.qualcomm.bt.hci_transport smd
|
|
||||||
elif [ "$btsoc" = "rome" ]
|
|
||||||
then
|
|
||||||
setprop ro.bluetooth.hfp.ver 1.6
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
"msm8996" )
|
|
||||||
if [ "$btsoc" != "rome" ]
|
|
||||||
then
|
|
||||||
setprop ro.qualcomm.bt.hci_transport smd
|
|
||||||
elif [ "$btsoc" = "rome" ]
|
|
||||||
then
|
|
||||||
setprop ro.bluetooth.hfp.ver 1.7
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
"msmcobalt")
|
|
||||||
setprop ro.bluetooth.hfp.ver 1.6
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ -f /system/etc/bluetooth/stack.conf ]; then
|
|
||||||
stack=`cat /system/etc/bluetooth/stack.conf`
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$stack" in
|
|
||||||
"bluez")
|
|
||||||
logi "Bluetooth stack is $stack"
|
|
||||||
setprop ro.qc.bluetooth.stack $stack
|
|
||||||
reason=`getprop vold.decrypt`
|
|
||||||
case "$reason" in
|
|
||||||
"trigger_restart_framework")
|
|
||||||
start dbus
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
logi "Bluetooth stack is Bluedroid"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
start_hciattach ()
|
|
||||||
{
|
|
||||||
/system/bin/hciattach -n $BTS_DEVICE $BTS_TYPE $BTS_BAUD &
|
|
||||||
hciattach_pid=$!
|
|
||||||
logi "start_hciattach: pid = $hciattach_pid"
|
|
||||||
echo 1 > $BLUETOOTH_SLEEP_PATH
|
|
||||||
}
|
|
||||||
|
|
||||||
kill_hciattach ()
|
|
||||||
{
|
|
||||||
echo 0 > $BLUETOOTH_SLEEP_PATH
|
|
||||||
logi "kill_hciattach: pid = $hciattach_pid"
|
|
||||||
## careful not to kill zero or null!
|
|
||||||
kill -TERM $hciattach_pid
|
|
||||||
# this shell doesn't exit now -- wait returns for normal exit
|
|
||||||
}
|
|
||||||
|
|
||||||
logi "init.qcom.bt.sh config = $config"
|
|
||||||
case "$config" in
|
|
||||||
"onboot")
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# mimic hciattach options parsing -- maybe a waste of effort
|
|
||||||
USAGE="hciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] <tty> <type | id> [speed] [flow|noflow] [bdaddr]"
|
|
||||||
|
|
||||||
while getopts "blnpt:s:" f
|
|
||||||
do
|
|
||||||
case $f in
|
|
||||||
b | l | n | p) opt_flags="$opt_flags -$f" ;;
|
|
||||||
t) timeout=$OPTARG;;
|
|
||||||
s) initial_speed=$OPTARG;;
|
|
||||||
\?) echo $USAGE; exit 1;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
shift $(($OPTIND-1))
|
|
||||||
|
|
||||||
# Note that "hci_qcomm_init -e" prints expressions to set the shell variables
|
|
||||||
# BTS_DEVICE, BTS_TYPE, BTS_BAUD, and BTS_ADDRESS.
|
|
||||||
|
|
||||||
#Selectively Disable sleep
|
|
||||||
BOARD=`getprop ro.board.platform`
|
|
||||||
STACK=`getprop ro.qc.bluetooth.stack`
|
|
||||||
|
|
||||||
# BR/EDR & LE power class configurations
|
|
||||||
POWER_CLASS=`getprop qcom.bt.dev_power_class`
|
|
||||||
LE_POWER_CLASS=`getprop qcom.bt.le_dev_pwr_class`
|
|
||||||
|
|
||||||
#find the transport type
|
|
||||||
TRANSPORT=`getprop ro.qualcomm.bt.hci_transport`
|
|
||||||
logi "Transport : $TRANSPORT"
|
|
||||||
case $STACK in
|
|
||||||
"bluez")
|
|
||||||
logi "** Bluez stack **"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
logi "** Bluedroid stack **"
|
|
||||||
setprop bluetooth.status off
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
|
|
||||||
case $POWER_CLASS in
|
|
||||||
1) PWR_CLASS="-p 0" ;
|
|
||||||
logi "Power Class: 1";;
|
|
||||||
2) PWR_CLASS="-p 1" ;
|
|
||||||
logi "Power Class: 2";;
|
|
||||||
3) PWR_CLASS="-p 2" ;
|
|
||||||
logi "Power Class: CUSTOM";;
|
|
||||||
*) PWR_CLASS="";
|
|
||||||
logi "Power Class: Ignored. Default(1) used (1-CLASS1/2-CLASS2/3-CUSTOM)";
|
|
||||||
logi "Power Class: To override, Before turning BT ON; setprop qcom.bt.dev_power_class <1 or 2 or 3>";;
|
|
||||||
esac
|
|
||||||
|
|
||||||
case $LE_POWER_CLASS in
|
|
||||||
1) LE_PWR_CLASS="-P 0" ;
|
|
||||||
logi "LE Power Class: 1";;
|
|
||||||
2) LE_PWR_CLASS="-P 1" ;
|
|
||||||
logi "LE Power Class: 2";;
|
|
||||||
3) LE_PWR_CLASS="-P 2" ;
|
|
||||||
logi "LE Power Class: CUSTOM";;
|
|
||||||
*) LE_PWR_CLASS="-P 1";
|
|
||||||
logi "LE Power Class: Ignored. Default(2) used (1-CLASS1/2-CLASS2/3-CUSTOM)";
|
|
||||||
logi "LE Power Class: To override, Before turning BT ON; setprop qcom.bt.le_dev_pwr_class <1 or 2 or 3>";;
|
|
||||||
esac
|
|
||||||
|
|
||||||
eval $(/system/bin/hci_qcomm_init -e $PWR_CLASS $LE_PWR_CLASS && echo "exit_code_hci_qcomm_init=0" || echo "exit_code_hci_qcomm_init=1")
|
|
||||||
|
|
||||||
case $exit_code_hci_qcomm_init in
|
|
||||||
0) logi "Bluetooth QSoC firmware download succeeded, $BTS_DEVICE $BTS_TYPE $BTS_BAUD $BTS_ADDRESS";;
|
|
||||||
*) failed "Bluetooth QSoC firmware download failed" $exit_code_hci_qcomm_init;
|
|
||||||
case $STACK in
|
|
||||||
"bluez")
|
|
||||||
logi "** Bluez stack **"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
logi "** Bluedroid stack **"
|
|
||||||
setprop bluetooth.status off
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
exit $exit_code_hci_qcomm_init;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# init does SIGTERM on ctl.stop for service
|
|
||||||
trap "kill_hciattach" TERM INT
|
|
||||||
|
|
||||||
case $TRANSPORT in
|
|
||||||
"smd")
|
|
||||||
case $STACK in
|
|
||||||
"bluez")
|
|
||||||
logi "** Bluez stack **"
|
|
||||||
echo 1 > /sys/module/hci_smd/parameters/hcismd_set
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
logi "** Bluedroid stack **"
|
|
||||||
setprop bluetooth.status on
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
logi "start hciattach"
|
|
||||||
start_hciattach
|
|
||||||
case $STACK in
|
|
||||||
"bluez")
|
|
||||||
logi "Bluetooth is turning On with Bluez stack "
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
logi "** Bluedroid stack **"
|
|
||||||
setprop bluetooth.status on
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
wait $hciattach_pid
|
|
||||||
logi "Bluetooth stopped"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
@@ -670,38 +670,6 @@ on property:sys.shutdown.requested=*
|
|||||||
on property:ro.hw.ecompass=true
|
on property:ro.hw.ecompass=true
|
||||||
enable ecompassd
|
enable ecompassd
|
||||||
|
|
||||||
service config_bt_addr /system/vendor/bin/btnvtool -O
|
|
||||||
class core
|
|
||||||
user bluetooth
|
|
||||||
group bluetooth radio
|
|
||||||
oneshot
|
|
||||||
|
|
||||||
service config_bluetooth /system/bin/sh /system/vendor/etc/init.qcom.bt.sh "onboot"
|
|
||||||
class core
|
|
||||||
user bluetooth
|
|
||||||
group bluetooth system
|
|
||||||
oneshot
|
|
||||||
|
|
||||||
service hciattach /system/bin/sh /system/vendor/etc/init.qcom.bt.sh
|
|
||||||
class late_start
|
|
||||||
user bluetooth
|
|
||||||
group bluetooth net_bt_admin
|
|
||||||
disabled
|
|
||||||
oneshot
|
|
||||||
|
|
||||||
on property:bluetooth.hciattach=true
|
|
||||||
start hciattach
|
|
||||||
|
|
||||||
on property:bluetooth.hciattach=false
|
|
||||||
setprop bluetooth.status off
|
|
||||||
|
|
||||||
service btsnoop /system/bin/btsnoop
|
|
||||||
user bluetooth
|
|
||||||
group bluetooth net_bt_admin sdcard_rw sdcard_r media_rw
|
|
||||||
class late_start
|
|
||||||
disabled
|
|
||||||
oneshot
|
|
||||||
|
|
||||||
service netmgrd /system/vendor/bin/netmgrd
|
service netmgrd /system/vendor/bin/netmgrd
|
||||||
class main
|
class main
|
||||||
group radio system wakelock
|
group radio system wakelock
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
# Bluetooth executables and scripts
|
|
||||||
type bluetooth_loader, domain;
|
|
||||||
type bluetooth_loader_exec, exec_type, file_type;
|
|
||||||
|
|
||||||
# Start bdAddrLoader from init
|
|
||||||
init_daemon_domain(bluetooth_loader)
|
|
||||||
|
|
||||||
# Run init.qcom.bt.sh
|
|
||||||
allow bluetooth_loader shell_exec:file { entrypoint getattr read };
|
|
||||||
allow bluetooth_loader bluetooth_loader_exec:file { getattr open execute_no_trans };
|
|
||||||
|
|
||||||
# init.qcom.bt.sh needs /system/bin/log access
|
|
||||||
allow bluetooth_loader devpts:chr_file rw_file_perms;
|
|
||||||
|
|
||||||
# Run hci_qcomm_init from init.qcom.bt.sh
|
|
||||||
domain_auto_trans(bluetooth_loader, hci_attach_exec, hci_attach)
|
|
||||||
allow hci_attach bluetooth_loader:fd use;
|
|
||||||
|
|
||||||
# Set persist.service.bdroid.* and bluetooth.* property values
|
|
||||||
set_prop(bluetooth_loader, bluetooth_prop)
|
|
||||||
|
|
||||||
# Allow getprop/setprop for init.qcom.bt.sh
|
|
||||||
allow bluetooth_loader system_file:file execute_no_trans;
|
|
||||||
allow bluetooth_loader toolbox_exec:file rx_file_perms;
|
|
||||||
|
|
||||||
# Allow hci_qcomm_init /persist/.bt_nv.bin access
|
|
||||||
r_dir_file(bluetooth_loader, persist_file);
|
|
||||||
allow bluetooth_loader bluetooth_data_file:file r_file_perms;
|
|
||||||
|
|
||||||
# Access the smd device
|
|
||||||
allow bluetooth_loader hci_attach_dev:chr_file rw_file_perms;
|
|
||||||
|
|
||||||
# And qmuxd
|
|
||||||
allow bluetooth_loader qmuxd_socket:dir { write add_name remove_name search };
|
|
||||||
allow bluetooth_loader qmuxd_socket:sock_file { create setattr getattr write unlink };
|
|
||||||
allow bluetooth_loader qmuxd:unix_stream_socket { connectto };
|
|
||||||
|
|
||||||
userdebug_or_eng(`
|
|
||||||
diag_use(bluetooth_loader)
|
|
||||||
')
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
type config_bluetooth, domain;
|
|
||||||
type config_bluetooth_exec, exec_type, file_type;
|
|
||||||
init_daemon_domain(config_bluetooth)
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
type hci_attach, domain;
|
|
||||||
type hci_attach_exec, exec_type, file_type;
|
|
||||||
|
|
||||||
init_daemon_domain(hci_attach)
|
|
||||||
|
|
||||||
allow hci_attach kernel:system module_request;
|
|
||||||
allow hci_attach hci_attach_dev:chr_file rw_file_perms;
|
|
||||||
allow hci_attach bluetooth_efs_file:dir r_dir_perms;
|
|
||||||
allow hci_attach bluetooth_efs_file:file r_file_perms;
|
|
||||||
Reference in New Issue
Block a user