#! /bin/sh
### BEGIN INIT INFO
# Provides: bluetooth
# Required-Start:    $local_fs $syslog $remote_fs dbus
# Required-Stop:     $local_fs $syslog $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start bluetooth daemons
### END INIT INFO
#
# bluez    Bluetooth subsystem starting and stopping
#
# originally from bluez's scripts/bluetooth.init
#
# Edd Dumbill <ejad@debian.org>
# LSB 3.0 compilance and enhancements by Filippo Giunchedi <filippo@debian.org>
#
# Updated for bluez 4.7 by Mario Limonciello <mario_limonciello@dell.com>
# Updated for bluez 5.5 by Nobuhiro Iwamatsu <iwamatsu@debian.org>
#
# Note: older daemons like dund pand hidd are now shipped inside the
# bluez-compat package

setvar PATH = "/sbin:/bin:/usr/sbin:/usr/bin"
setvar DESC = 'bluetooth'

setvar DAEMON = "/usr/sbin/bluetoothd"
setvar HCIATTACH = "/usr/bin/hciattach"

setvar BLUETOOTH_ENABLED = '0'
setvar HID2HCI_ENABLED = '1'
setvar HID2HCI_UNDO = '1'

setvar SDPTOOL = "/usr/bin/sdptool"

# If you want to be ignore error of "org.freedesktop.hostname1",
# please enable NOPLUGIN_OPTION.
# NOPLUGIN_OPTION="--noplugin=hostname"
setvar NOPLUGIN_OPTION = """"
setvar SSD_OPTIONS = ""--oknodo --quiet --exec $DAEMON -- $NOPLUGIN_OPTION""

test -f $DAEMON || exit 0

# FIXME: any of the sourced files may fail if/with syntax errors
test -f /etc/default/bluetooth && source /etc/default/bluetooth
test -f /etc/default/rcS && source /etc/default/rcS

source /lib/lsb/init-functions

set -e

# FIXME: this function is possibly a no-op
proc run_sdptool {
	# declaring IFS local in this function, removes the need to
	# save/restore it
	local IFS o

	test -x $SDPTOOL || return 1

# FIXME: where does SDPTOOL_OPTIONS come from?
	if ! test -z $SDPTOOL_OPTIONS  {
		setvar IFS = "";""
		for o in $SDPTOOL_OPTIONS  {
			#echo "execing $SDPTOOL $o"
			setvar IFS = "" ""
			if test $VERBOSE != no {
				$SDPTOOL $o
			} else {
				$SDPTOOL $o >/dev/null 2>&1
			}
		}
	}
}

proc hci_input {
    log_progress_msg "switching to HID/HCI no longer done in init script, see /usr/share/doc/bluez/NEWS.Debian.gz" || :
}
alias enable_hci_input=hci_input
alias disable_hci_input=hci_input

case (1) {
  start {
	log_daemon_msg "Starting $DESC"

	if test $BLUETOOTH_ENABLED = 0 {
		log_progress_msg "disabled. see /etc/default/bluetooth"
		log_end_msg 0
		exit 0
	}

	start-stop-daemon --start --background $SSD_OPTIONS
	log_progress_msg ${DAEMON##*/}

	run_sdptool || :

	if test $HID2HCI_ENABLED = 1 {
		enable_hci_input
	}

	log_end_msg 0
  }
  stop {
	log_daemon_msg "Stopping $DESC"
	if test $BLUETOOTH_ENABLED = 0 {
		log_progress_msg "disabled."
		log_end_msg 0
		exit 0
	}
	if test $HID2HCI_UNDO = 1 {
		disable_hci_input
	}
	start-stop-daemon --stop $SSD_OPTIONS
	log_progress_msg ${DAEMON}
	log_end_msg 0
  }
  restart|force-reload {
	$0 stop
	sleep 1
	$0 start
  }
  status {
	status_of_proc $DAEMON $DESC && exit 0 || exit $?
  }
  * {
	setvar N = "/etc/init.d/bluetooth"
	echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
	exit 1
	}
}

exit 0

# vim:noet