#! /bin/sh
### BEGIN INIT INFO
# Provides:          irda
# Required-Start:    $network $remote_fs
# Required-Stop:     $network $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Infrared port support
### END INIT INFO

NAME="irattach"
test -x "$IRDA_DAEMON" || IRDA_DAEMON=/usr/sbin/irattach
test -z "$IRATTACH_PID" && IRATTACH_PID=/var/run/irattach.pid

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

module_id() {
        awk 'BEGIN { FS=": " } /Hardware/ { print $2 } ' </proc/cpuinfo
}

if [ ! -f /etc/sysconfig/irda ]; then
    case `module_id` in
	"HP iPAQ H2200" | "HP iPAQ HX4700" | "HTC Universal")
	    IRDA=yes
	    DEVICE=/dev/ttyS2
	    DONGLE=
	    DISCOVERY=
	    ;;
	*)
	    IRDA=yes
	    DEVICE=/dev/ttyS1
	    DONGLE=
	    DISCOVERY=
	    ;;
    esac
else
    . /etc/sysconfig/irda
fi

# Check that irda is up.
[ ${IRDA} = "no" ] && exit 0

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

ARGS=
if [ $DONGLE ]; then
	ARGS="$ARGS -d $DONGLE"
fi
if [ "$DISCOVERY" = "yes" ];then
	ARGS="$ARGS -s"
fi

case "$1" in
  start)
	echo -n "Starting IrDA: $NAME"
	start-stop-daemon --start --quiet --exec "$IRDA_DAEMON" ${DEVICE} ${ARGS} --pidfile "$IRATTACH_PID"
	sleep 1
	[ -f /var/run/irattach.pid ] && echo " done" || echo " fail"
	;;
  stop)
	echo "Stopping IrDA: $NAME"
	start-stop-daemon --stop --quiet --exec "$IRDA_DAEMON" --pidfile "$IRATTACH_PID"
	;;
  restart|force-reload)
	$0 stop
	$0 start
	;;
  status)
	status irattach
	exit $?
	;;
  *)
	N=/etc/init.d/$NAME
	echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
	exit 1
	;;
esac
