#! /bin/bash
#
# ibmasm          Start/Stop ibmasm driver.
#
# chkconfig: - 50 50
# description: The IBM Advanced System Management Device Drivers allow\
#       software to interact with the Advanced System Management\
#       Processor or Adapter.

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

RETVAL=0
prog=ibmsphalt
pidfile="/var/run/ibmsphalt.pid"
lockfile="/var/lock/subsys/ibmsphalt"

start() {
    echo -n $"Starting $prog: "
    if [ -n "$(pidofproc ibmsphalt)" ]; then
        echo -n $"$prog: already running"
        echo_failure
        echo
        return 1
    fi
    # Make sure the module (ibmasm) is loaded and its fs is exported.
    if grep -v -q ibmasmfs /proc/filesystems; then
        modprobe ibmasm || exit 1
    fi

    echo -en "\nWaiting for ibmasm device to appear (10 seconds timeout)"
    TIMEOUT=10
    for ((i=0; i<$TIMEOUT; i++)); do
        DEVICE=`/usr/bin/evnode -n "ibmasm RSA I remote mouse"`
        if [ ! -z $DEVICE ]; then 
            TIMEOUT="ok"
            break; 
        fi
        echo -n ". "
        sleep 1
    done
    # Check the timeout. If not changed, then no device found.
    if [ $TIMEOUT == "10" ]; then
        echo -en "No device detected. Aborted."
        echo_failure
        echo
        return 1
    fi
    # Mount the fs.
    mount -t ibmasmfs ibmasm /var/lib/ibmasm
    daemon /usr/sbin/$prog
    RETVAL=$?
     [ $RETVAL -eq 0 ] && touch $lockfile
    [ $RETVAL -eq 0 ] && echo_success
    [ $RETVAL -ne 0 ] && echo_failure
    echo
    return $RETVAL
}

stop() {
    echo -n $"Stopping ibmasm: "
    killproc $prog
    RETVAL=$?
    /bin/umount /var/lib/ibmasm 2>/dev/null
    /sbin/modprobe -q -r ibmasm
    echo
    [ $RETVAL -eq 0 ] && rm -f $lockfile $pidfile
    return $RETVAL
}    


restart() {
      stop
    start
}    

case "$1" in
  start)
      start
    ;;
  stop)
      stop
    ;;
  restart)
      restart
    ;;
  status)
      status $prog
    RETVAL=$?
    ;;
  condrestart)
      [ -f $lockfile ] && restart || :
    ;;
  *)
    echo $"Usage: $0 {start|stop|status|restart|condrestart}"
    exit 1
esac