#!/bin/sh
# Script to test native build of LinCAN in the KDE konsole window
# This script uses command DCOP scripting capabilities of konsole
# and if it is started from already running console, scripting has to be enabled.
# Parameter "--script" is required when konsole has been started.
#   konsole --script

#CAN_SRC_DIR=~/ocera/ocera-pc104/components/comm/can
#CAN_BIN_DIR=~/ocera/ocera-pc104/target-i386/usr/bin
#CAN_UTILS_DIR=~/ocera/ocera-pc104/target-i386/usr/bin

if [ -z "$CAN_BIN_DIR" ] ; then
  MAKERULES_DIR=$( cd `dirname $0` ; old_pwd="" ;  while [ ! -e Makefile.rules ] ; do if [ "$old_pwd" == `pwd`  ] ; \
   then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd )
  CAN_BIN_DIR="$MAKERULES_DIR/_compiled/bin"
  CAN_UTILS_DIR="$MAKERULES_DIR/_compiled/bin-utils"
  CAN_MODULES_DIR="$MAKERULES_DIR/_compiled/modules"
fi

if [ -z "$CAN_SRC_DIR" ] ; then
  CAN_SRC_DIR=$(cd `dirname $0` ; pwd)
fi

if [ -z "$(lsmod | grep '^lincan' )" ] ; then
  echo Inserting LinCAN module
  echo insmod $CAN_MODULES_DIR/lincan.*o hw=virtual io=0
  insmod $CAN_MODULES_DIR/lincan.*o hw=virtual io=0
  if [ $? -ne 0 ] ; then
    echo "Trying to insert LinCAN in the supervisor/root mode"
    su -c "insmod $CAN_MODULES_DIR/lincan.*o hw=virtual io=0"
    if [ $? -ne 0 ] ; then
      echo LinCAN has not been inserted and attempt to insert it failed
      exit 1
    fi
  fi
fi

if [ -n "$KONSOLE_DCOP" ] ; then
  #DCOPRef(konsole-9272,konsole)
  konsole=$(echo "$KONSOLE_DCOP" | sed -n 's/DCOPRef(\([^,]*\),konsole)/\1/p')
else
  konsole=$(dcopstart konsole-script)
fi

echo "INVOKING: cd $CAN_SRC_DIR"
session=$(dcop $konsole konsole newSession)
dcop $konsole $session renameSession Compile
dcop $konsole $session sendSession "cd $CAN_SRC_DIR"

echo "INVOKING: cd $CAN_BIN_DIR ; ./canblaster -g 15"
session=$(dcop $konsole konsole newSession)
dcop $konsole $session renameSession canblaster
dcop $konsole $session sendSession "cd $CAN_BIN_DIR ; ./canblaster -g 15"

echo "INVOKING: cd $CAN_BIN_DIR ; ./canslave -g 15 -e $CAN_SRC_DIR/nascan.eds -s $CAN_SRC_DIR/nascan.hds"
session=$(dcop $konsole konsole newSession)
dcop $konsole $session renameSession canslave
dcop $konsole $session sendSession "cd $CAN_BIN_DIR ; ./canslave -g 15 -e $CAN_SRC_DIR/candev/nascan.eds -s $CAN_SRC_DIR/candev/nascan.hds"

echo "INVOKING: cd $CAN_BIN_DIR ; ./canmonitor"
session=$(dcop $konsole konsole newSession)
dcop $konsole $session renameSession canmonitor
dcop $konsole $session sendSession "cd $CAN_BIN_DIR ; ./canmonitor"

echo "INVOKING: cd $CAN_UTILS_DIR ; ./readburst"
session=$(dcop $konsole konsole newSession)
dcop $konsole $session renameSession readburst
dcop $konsole $session sendSession "cd $CAN_UTILS_DIR ; ./readburst"
