#!/bin/sh
#
-# bluetooth Bluetooth subsystem starting and stopping
+# bluetooth Bluetooth subsystem starting and stopping. Turn HID adapters into Bluetooth ones.
#
-# chkconfig: 345 25 90
+# chkconfig: 345 50 83
#
# description: Bluetooth subsystem
#
# Source function library
. /etc/rc.d/init.d/functions
-UART_CONF="/etc/bluetooth/uart"
[ -f /etc/sysconfig/bluetooth ] && . /etc/sysconfig/bluetooth
-if [ "$UART_CONF" != "no" -a ! -f "$UART_CONF" ]; then
- UART_CONF="no"
-fi
-
start() {
# Check if the service is already running?
- if [ ! -f /var/lock/subsys/bluetooth ]; then
- if is_yes "${DAEMON_ENABLE}" && [ -x /usr/sbin/bluetoothd ]; then
- msg_starting bluetooth
- daemon /usr/sbin/bluetoothd
- RETVAL=$?
- fi
-
- if is_yes "${HID2HCI_ENABLE}" && [ -x /usr/sbin/hid2hci ]; then
- msg_starting hid2hci
- daemon /usr/sbin/hid2hci -0 -q #be quiet
- RETVAL=$?
- /bin/sleep 1 # delay for hid's to be detected by hotplug
- fi
-
- if is_yes "${HCID_ENABLE}" && [ -x /usr/sbin/hcid ]; then
- HCID_FLAGS="-f /etc/bluetooth/hcid.conf"
-
- if is_yes "${SDPD_ENABLE}" ; then
- HCID_FLAGS="$HCID_FLAGS -s"
- fi
- msg_starting hcid
- daemon /usr/sbin/hcid $HCID_FLAGS
- RETVAL=$?
- fi
-
- if is_yes "${HIDD_ENABLE}" && [ -x /usr/bin/hidd ]; then
- msg_starting hidd
- daemon /usr/bin/hidd ${HIDD_OPTIONS} --server
- RETVAL=$?
- fi
-
- if is_yes "${RFCOMM_ENABLE}" && [ -x /usr/bin/rfcomm ]; then
- msg_starting rfcomm
- daemon /usr/bin/rfcomm -f /etc/bluetooth/rfcomm.conf bind all
- RETVAL=$?
- fi
-
- if is_yes "${DUND_ENABLE}" && [ -x /usr/bin/dund ]; then
- msg_starting dund
- daemon /usr/bin/dund ${DUND_OPTIONS}
- RETVAL=$?
- fi
-
- if is_yes "${PAND_ENABLE}" && [ -x /usr/bin/pand ]; then
- msg_starting pand
- daemon /usr/bin/pand ${PAND_OPTIONS}
- RETVAL=$?
- fi
-
- if [ -f /usr/sbin/hciattach -a "$UART_CONF" != "no" ]; then
- grep -v '^#' $UART_CONF | while read i; do
- /usr/sbin/hciattach $i
- done
- fi
- touch /var/lock/subsys/bluetooth
- else
+ if [ -f /var/lock/subsys/bluetooth ]; then
msg_already_running bluetooth
+ return
fi
-}
-
-stop() {
- if [ -f /var/lock/subsys/bluetooth ]; then
- if is_yes "${PAND_ENABLE}" && [ -x /usr/bin/pand ]; then
- msg_stopping pand
- killproc /usr/bin/pand
- fi
-
- if is_yes "${DUND_ENABLE}" && [ -x /usr/bin/dund ]; then
- msg_stopping dund
- killproc /usr/bin/dund
- fi
- if is_yes "${RFCOMM_ENABLE}" && [ -x /usr/bin/rfcomm ]; then
- msg_stopping rfcomm
- daemon /usr/bin/rfcomm release all
- fi
-
- if is_yes "${HIDD_ENABLE}" && [ -x /usr/bin/hidd ]; then
- msg_stopping hidd
- killproc /usr/bin/hidd
- fi
-
- if is_yes "${HCID_ENABLE}" && [ -x /usr/sbin/hcid ]; then
- msg_stopping hcid
- killproc /usr/sbin/hcid
- fi
+ if [ ! -x /sbin/udevadm ]; then
+ return
+ fi
- if is_yes "${DAEMON_ENABLE}" && [ -x /usr/sbin/bluetoothd ]; then
- msg_stopping bluetooth
- killproc /usr/sbin/bluetoothd
- fi
+ msg_starting "Bluetooth devices"
+ daemon /sbin/udevadm trigger --subsystem-match=bluetooth --action=add
+ RETVAL=$?
+ touch /var/lock/subsys/bluetooth
+}
- if [ "$UART_CONF" != "no" ]; then
- killproc hciattach >/dev/null 2>&1
- fi
- rm -f /var/lock/subsys/bluetooth
- else
+stop() {
+ if [ ! -f /var/lock/subsys/bluetooth ]; then
msg_not_running bluetooth
+ return
fi
+
+ # nothing needed to stop it
+ rm -f /var/lock/subsys/bluetooth
}
condrestart() {
- if [ -f /var/lock/subsys/bluetooth ]; then
- stop
- start
- else
+ if [ ! -f /var/lock/subsys/bluetooth ]; then
msg_not_running bluetooth
RETVAL=$1
+ return
+ fi
+
+ stop
+ start
+}
+
+status() {
+ if [ ! -f /var/lock/subsys/bluetooth ]; then
+ msg_not_running bluetooth
+ RETVAL=3
+ return $RETVAL
fi
+
+ nls "bluetooth is running"
}
RETVAL=0
# See how we were called.
case "$1" in
start)
- start
+ start
;;
stop)
- stop
+ stop
;;
- restart)
+ restart|reload|force-reload)
stop
start
;;
try-restart)
condrestart 0
;;
- reload|force-reload)
- if [ -f /var/lock/subsys/bluetooth ]; then
- msg_reloading hcid
- killproc hcid -HUP
- RETVAL=$?
- else
- msg_not_running bluetooth
- exit 7
- fi
- ;;
status)
- is_yes "${HID2HCI_ENABLE}" && status hid2hci
- is_yes "${HCID_ENABLE}" && status hcid
- is_yes "${SDPD_ENABLE}" && status sdpd
- is_yes "${HIDD_ENABLE}" && status hidd
- is_yes "${DUND_ENABLE}" && status dund
- if [ -f /var/lock/subsys/bluetooth ]; then
- exit 0
- else
- exit 1
- fi
+ status
+ RETVAL=$?
;;
*)
msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|status}"