#!/bin/bash 
#
# Script for executing standard ICE functions from non-Midas environments
#  must use /bin/bash for some of the syntax uses /bin/sh wont cut it
#
# @author  Jeff Schoen
# @version $Id: ice,v 1.47 2011/07/11 21:48:58 jgs Exp $
#
if [ -z "$ICEROOT" ]; then export ICEROOT=`readlink -f $0 | sed 's/\/jre\/ice//'` ; fi

cd $ICEROOT

if [ "$1" = "install" ]; then

  echo -n "Setup and install driver for ICE cards [y/n]? " ; read ans
  if [ "$ans" = "y" ]; then
    echo -n "Edit with vi the file $ICEROOT/drv/lnx/icepic to set RAM values [y/n]? " ; read ans
    if [ "$ans" = "y" ]; then vi $ICEROOT/drv/lnx/icepic ; fi
    echo -n "Use sudo to execute driver installation script [y/n]? " ; read ans
    if [ "$ans" = "y" ]; then sudo bash -c "cd $ICEROOT/drv/lnx/; ./icepic all" ; fi
  fi

  echo -n "Compile standalone ICE test routines [y/n]? " ; read ans1
  if [ -n "$JAVAHOME" ]; then
    echo -n "Unpack java class files for ICE deployment environment [y/n]? " ; read ans2
    echo -n "Setup the ICE Option Tree for a one-hot Appliance [y/n]? " ; read ans3
    echo -n "Setup the ICE Option Tree for a Factory Confiured Appliance [y/n]? " ; read ans4
  fi
  if [ -n "$JAVAHOME" -a -n "$NMROOT" ]; then
    echo -n "Build the ICE Option Tree for NeXtMidas [y/n]? " ; read ans5
    echo -n "ReBuild the ICE Deployment environment jar files [y/n]? " ; read ans6
    echo -n "Auto-Configure currently installed ICE cards [y/n]? " ; read ans7
  fi

fi

if [ "$1" = "reinstall" ]; then
  ans1="y"
  ans2="y"
  ans3="n"
  ans4="n"
  ans5="y"
  ans6="y"
  ans7="n"
fi

if [ "$1" = "install"  -o "$1" = "reinstall" ]; then

  if [ ! -d htdocs ]; then ln -sfn docs htdocs ; fi
  if [ "$ans1" = "y" ]; then test/build.lnx ; fi
  if [ -n "$JAVAHOME" ]; then
    if [ "$ans2" = "y" ]; then $JAVAHOME/bin/jar -xf jre/nxm-all-local.jar ; fi
    if [ "$ans3" = "y" ]; then cp $ICEROOT/cfg/icestartuphot.mm $HOME/icestartup.mm ; fi
    if [ "$ans3" = "y" ]; then mkdir $ICEROOT/jre/icedisk ; fi
    if [ "$ans4" = "y" ]; then cp $ICEROOT/cfg/icestartupfca.mm $HOME/icestartup.mm ; fi
  fi
  if [ -n "$JAVAHOME" -a -n "$NMROOT" ]; then
    if [ "$ans5" = "y" ]; then $ICEROOT/jre/icebat.sh make all ice ; fi
    if [ "$ans6" = "y" ]; then $ICEROOT/jre/icebld.sh all; fi
    if [ "$ans7" = "y" ]; then $ICEROOT/jre/icebat.sh ice auto ; fi
  fi
  exit
fi

if [ -z "$JAVAHOME" -a -x /midas/opt/jdkxxx ]; then export JAVAHOME=/midas/opt/jdkxxx ; fi
if [ -z "$JAVAHOME" -a -x /opt/ice/pkg/jdkxxx ]; then export JAVAHOME=/opt/ice/pkg/jdkxxx ; fi
if [ -z "$JAVAHOME" -a -x /usr/bin/jar -a -x /usr/bin/java ]; then export JAVAHOME=/usr ; fi

if [ -z "$1" ]; then
  cat exp/ice.exp

elif [ "$1" = "driver" ]; then
  cat /proc/driver/icepic

elif [ "$1" = "version" ]; then
  ver=`cat $ICEROOT/version.txt | grep "\*\*\* ICE" | awk '{ print $3 }'i`
  echo "VERSION=$ver"

elif [ "$1" = "unpack" ]; then
  test/build.lnx 
  jre/icebld.sh unpack
  if [ ! -d htdocs ]; then ln -sfn docs htdocs ; fi

elif [ "$1" = "flash" ]; then
  test/flashpic $2 $3

elif [ "$1" = "checkflash" ]; then
  test/test pic $2 checkflash

elif [ "$1" = "net" ]; then
  test/icenet $2 $3 $4 $5 $6 $7

elif [ "$1" = "pmi" ]; then
  test/ipmice $2 $3 $4 

elif [ "$1" = "setram" ]; then
  test/setram $2 $3 $4 

elif [ "$1" = "resetram" ]; then
  test/setram -1 -1 -1

elif [ "$1" = "tty" ]; then
  port=ACM0; if [ "$2" != "" ]; then port=$2; fi
  echo "Setting tty port $port parameters"
  stty -F /dev/tty$port cs8 2500000 raw -iexten -echo -echoe
  stty -F /dev/tty$port 

elif [ "$1" = "detect" ]; then
  if [ ! -x $ICEROOT/test/test ]; then test/build.lnx test ; fi
  test/test detect

elif [ -z "$JAVAHOME" ]; then
  echo "Environment variable JAVAHOME must be defined to run the ICE JRE components"

else

  if [ ! -d nxm/sys ]; then echo "No ICE deployment environment found. Must run 'ice unpack' first."; exit; fi
  if [[ "$1" = "server"* ]]; then jre/checkup.lnx; fi
  if [ -z "$NM_USER_JVM_FLAGS" ]; then export NM_USER_JVM_FLAGS="-Xmx256m -Xms256m -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC"; fi

  args=""
  xtra=""
  if [ "$1" = "sh" -o "$*" = "nm" ]; then
    xtra="-prompt"
  elif [ "$1" = "nm" ]; then
    args=`echo "$*" | sed 's/nm //' `
  else
    args="ice $*"
  fi

  if [ -n "$NMROOT" -a -f $HOME/nmstartup.mm ]; then
    jars=`ls $NMROOT/nxm/sys/jars/*.jar | sed ':a;N;$!ba;s/\n/:/g'`
    ${JAVAHOME}/bin/java $NM_USER_JVM_FLAGS -DNMROOT=$NMROOT/ -Djavahome=$JAVAHOME -classpath ${NMROOT}:${ICEROOT}:$jars \
      nxm.sys.lib.NeXtMidas -nonative="false" -cmd="%nmstartup/mfn=nxm.sys.cfg.nmstartup" -cmd="%nmstartup /quiet" -cmd="$args" $xtra
  else
    startup=$HOME/icestartup.mm
    if [ ! -f $startup ]; then cp $ICEROOT/cfg/icestartup.mm $startup ; fi
    if [ ! -n "$NMROOT" ]; then NMROOT=$ICEROOT ; fi
    jars="jre/nxm-sys.jar:jre/nxm-ice.jar:jre/nxm-hwc.jar:jre/nxm-dsp.jar:jre/lucene.jar:jre/swing-layout-1.0.jar:jre/commons-net-3.3.jar"
    ${JAVAHOME}/bin/java $NM_USER_JVM_FLAGS -DNMROOT=$ICEROOT/ -Djavahome=$JAVAHOME -classpath ${ICEROOT}:$jars \
      nxm.sys.lib.NeXtMidas -nonative="false" -cmd="%nmstartup/mfn=nxm.sys.cfg.nmstartup" -cmd="%icestartup /quiet" -cmd="$args" $xtra
  fi

fi

