#!/bin/sh
#
# bluetooth    Bluetooth subsystem starting and stopping
#
# Written by Dag Wieers <dag@wieers.com>
#
# chkconfig: 2345 25 90
# description: Bluetooth subsystem

source /etc/rc.d/init.d/functions

[ -x /sbin/hcid ] || exit 1

### Default variables
HCID_ENABLE=true
SDPD_ENABLE=true
HIDD_ENABLE=true
HID2HCI_ENABLE=true
RFCOMM_ENABLE=true
PAND_ENABLE=false
DUND_ENABLE=false

HCID_CONFIG="/etc/bluetooth/hcid.conf"
RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf"

HIDD_OPTIONS=""
DUND_OPTIONS="--listen --persist"
PAND_OPTIONS="--listen --role NAP"

SYSCONFIG="/etc/sysconfig/bluetooth"

### Read configuration
[ -r "$SYSCONFIG" ] && source "$SYSCONFIG"

RETVAL=0
prog="bluetooth"
desc="Bluetooth"

start() {

	if [ "$HCID_ENABLE" == "true" ]; then
		prog="hcid"
        	echo -n $"Starting $desc ($prog): "
		daemon $prog -f $HCID_CONFIG
		echo
	fi

	if [ "$SDPD_ENABLE" == "true" ]; then
		prog="sdpd"
        	echo -n $"Starting $desc ($prog): "
		daemon $prog
		echo
	fi

	if [ "$HIDD_ENABLE" == "true" ]; then
		desc="Bluetooth Human Interface Device Daemon"
		prog="hidd"
        	echo -n $"Starting $desc ($prog): "
		daemon $prog --server $HIDD_OPTIONS
		echo
	fi

	if [ "$HID2HCI_ENABLE" == "true" ]; then
		desc="Bluetooth"
		prog="hid2hci"
		echo -n $"Starting $desc ($prog): "
		daemon $prog --tohci
		echo
	fi

	if [ "$RFCOMM_ENABLE" == "true" ]; then
		prog="rfcomm"
		echo -n $"Starting $desc ($prog): "
		daemon $prog -f $RFCOMM_CONFIG bind all
		echo
	fi

	if [ "$DUND_ENABLE" == "true" ]; then
		desc="Bluetooth Dial-Up-Networking Daemon"
		prog="dund"
		echo -n $"Starting $desc ($prog): "
		daemon $prog $DUND_OPTIONS
		echo
	fi

	if [ "$PAND_ENABLE" == "true" ]; then
		desc="Bluetooth Personal Area Networking Daemon"
		prog="pand"
		echo -n $"Starting $desc ($prog): "
		daemon $prog $PAND_OPTIONS
		echo
	fi

	prog="bluetooth"
	touch /var/lock/subsys/$prog
	return 0
}

stop() {
	for prog in pand dund; do
		pidofproc $prog &>/dev/null || continue
		echo -n $"Shutting down $desc ($prog): "
		killproc $prog
		echo
	done

	prog="rfcomm"
	echo -n $"Shutting down $desc ($prog): "
	$prog release all
	killproc $prog
	echo

	for prog in hidd sdpd hcid; do
		pidofproc $prog &>/dev/null || continue
		echo -n $"Shutting down $desc ($prog): "
		killproc $prog
		echo
	done

	prog="bluetooth"
	rm -f /var/lock/subsys/$prog
	return 0
}

restart() {
	stop
	start
}

case "$1" in
  start)
	start
        ;;
  stop)
	stop
        ;;
  restart|reload)
	restart
	;;
  condrestart)
        [ -e /var/lock/subsys/$prog ] && restart
        RETVAL=$?
        ;;
  status)
        status hcid
        status sdpd
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        RETVAL=1
esac

exit $RETVAL
