Blob Blame History Raw
#!/bin/sh
#
# chkconfig: 345 50 83
# description: Bluetooth services for service discovery, authentication, \
#	       Human Interface Devices, etc.
#
### BEGIN INIT INFO
# Required-Start: $syslog messagebus
# Short-Description: Bluetooth services
# Description: Bluetooth services for service discovery, authentication, 
#  Human Interface Devices, etc.
### END INIT INFO

# Source function library.
. /etc/rc.d/init.d/functions

[ -e /etc/sysconfig/bluetooth ] && . /etc/sysconfig/bluetooth

is_enabled_in_runlevel() 
{
	level=`runlevel | awk '{print $2;}'`

	#check file in runlevel
	[ -f /etc/rc$level.d/S??bluetooth ] 
	return $?
}

has_bt_devices()
{
	#Look for Bluetooth adapters:
	udevadm info --export-db | grep -q -e '/devices/.*/bluetooth/.*'

	return $?
}

check_condstart()
{
	is_enabled_in_runlevel || return $?

	/sbin/service bluetooth status && return 1

	#Look for Bluetooth adapters:
	has_bt_devices && return 0
	return 1
}

condstart()
{
	if [ "$BLUETOOTH_ONDEMAND" = "true" ]; then
		start
		return $?
	fi
	return 1
}

start()
{
	if [ "$BLUETOOTH_ONDEMAND" = "true" ]; then
		check_condstart || return 1
	fi

	echo -n $"Starting Bluetooth services:"
	daemon /usr/sbin/bluetoothd
	RETVAL=$?
	[ $RETVAL = 0 ] && touch /var/lock/subsys/bluetoothd
	[ "$HID2HCI_ENABLE" = "true" ] && hid2hci --tohci > /dev/null 2>&1 || :
	touch /var/lock/subsys/bluetooth
	echo ""
	return $RETVAL
}

stop()
{
	echo -n "Stopping Bluetooth services:"
	[ "$HID2HCI_UNDO" = "true" ] && hid2hci --tohid > /dev/null 2>&1 || :
	killproc bluetoothd
	RETVAL=$?
	rm -f /var/lock/subsys/bluetooth
	rm -f /var/lock/subsys/bluetoothd
	echo ""
	return $RETVAL
}

check_condstop()
{
	is_enabled_in_runlevel || return $?

	/sbin/service bluetooth status || return $?

	#Look for Bluetooth adapters:
	has_bt_devices && return 1
	return 0
}

condstop()
{
	if [ "$BLUETOOTH_ONDEMAND" = "true" ]; then
		check_condstop || return 1
	else
		return 2
	fi

	stop
	return $?
}


case "$1" in
  start)
	start
	;;
  condstart)
	condstart
	;;
  stop)
	stop
	;;
  condstop)
	condstop
	;;
  force-reload|restart|reload)
	stop
	start
	;;
  try-restart|condrestart)
	[ -e /var/lock/subsys/bluetooth ] && (stop; start)
	;;
  status)
	status bluetoothd
	RETVAL=$?
	;;
  *)
	echo $"Usage: $0 {start|stop|status|restart|reload|condrestart|condstart|condstop}"
	exit 3
	;;
esac

exit $RETVAL