#!/bin/sh
#
# bluetooth:    Start/stop bluetooth services
#
# chkconfig:    2345 25 90
# description:    Bluetooth services for service discovery, authentication, \
#        Human Interface Devices, etc.
#


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

UART_CONF="/etc/bluetooth/uart"

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

start_uarts()
{
    [ -f $UART_CONF ] || return
    grep -v '^#' $UART_CONF | while read i; do
        /usr/sbin/hciattach $i
    done
}

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

start()
{
    echo -n $"Starting Bluetooth services:"
    daemon /usr/sbin/hcid
    touch /var/lock/subsys/hcid
    daemon /usr/sbin/sdpd
    touch /var/lock/subsys/sdpd
    [ "$HID2HCI_ENABLE" = "true" ] && hid2hci --tohci > /dev/null 2>&1 || :
    start_uarts
    rfcomm bind all
    touch /var/lock/subsys/bluetooth
    echo ""
}

stop()
{
    echo -n "Stopping Bluetooth services:"
    stop_uarts
    rfcomm release all
    [ "$HID2HCI_UNDO" = "true" ] && hid2hci --tohid > /dev/null 2>&1 || :
    killproc sdpd
    rm -f /var/lock/subsys/sdpd
    killproc hcid
    rm -f /var/lock/subsys/hcid
    rm -f /var/lock/subsys/bluetooth
    echo ""
}

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

exit 0