#!/bin/bash
#
# bluetooth    Bluetooth subsystem starting and stopping
#
# description: Bluetooth subsystem
#

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

# Source Bluetooth configuration.
#. /etc/sysconfig/bluetooth

prog="Bluetooth"

UART_CONF="/etc/bluetooth/uart"

start_uarts()
{
	[ -f /usr/sbin/hciattach -a -f $UART_CONF ] || return
        ID=`/sbin/cardctl ident | grep info: | sed 's/^ *product info: *//' | sed 's/"/\\"/g'`
        UART_SET=`grep "$ID" $UART_CONF | cut -f2 -d":"`
        if [ "$UART_SET" != "" ]; then
	   /usr/sbin/hciattach $UART_SET
	fi
}

stop_uarts()
{
	killproc hciattach > /dev/null 2>&1
}

start() 
{
        echo -n $"Starting $prog... "
	modprobe rfcomm
	modprobe l2cap

        /usr/bin/make_dev.bluez.sh
        
        daemon /usr/sbin/hcid

	if [ -x /usr/sbin/sdpd ]; then
		daemon /usr/sbin/sdpd
	fi

	start_uarts
        /usr/bin/rfcomm bind all
	touch /var/lock/subsys/bluetooth
        echo "Done."
}

stop() 
{
        echo -n $"Shutting down $prog... "
	/usr/bin/rfcomm release all
        killproc hcid

	if [ -x /usr/sbin/sdpd ]; then
		killproc sdpd
	fi

	stop_uarts
	rmmod rfcomm > /dev/null 2>&1
        rmmod l2cap > /dev/null 2>&1
        rmmod bluez > /dev/null 2>&1

        rm -f  /var/lock/subsys/bluetooth
        echo "Done."
}

[ -f /usr/sbin/hcid ] || exit 0

# See how we were called.
case "$1" in
  start)
	start
        ;;
  stop)
	stop
        ;;
  restart|reload)
	stop
	start
	;;
  condrestart)
	[ -e /var/lock/subsys/bluetooth ] && (stop; start)
	;;
  *)
        echo $"Usage: $0 {start|stop|restart|reload|condrestart}"
        exit 1
esac

exit 0
