#!/bin/bash

#########################################
# Name: 
#
# Summary: Run dgrp_cfg_node and set permissions
#
# Description:
#
# Author: k headley
#
# Copyright MBARI
#
#########################################

#########################################
# Script configuration defaults
# casual users should not need to change
# anything below this section
#########################################
DGRP_CFG="/usr/bin/dgrp/config/dgrp_cfg_node"
MODE=664
GRP=20
CMD="init"

#kelpbed
ADDR="134.89.91.3"
OWN=500
ID="SW"

# fangtooth
#ADDR="134.89.13.8"
#OWN=501
#ID="QF"

# klh
#ADDR="xfdigi1"
#OWN=1000
#ID="xf"

#################################
# Script variable initialization
#################################
VERBOSE="FALSE"


#################################
# Function Definitions
#################################
#################################
# name: sigTrap
# description: signal trap callback
# will interrupt 
# args: none
#################################
sigTrap(){
    exit 0;
}

#################################
# name: printUsage
# description: print use message
# args: none
#################################
printUsage(){
    echo
    echo "usage: `basename $0`"
    echo "-a <ip_addr> : hostname/ip addr        [$ADDR]"
    echo "-c <cmd>     : command                 [$CMD]"
    echo "               (init|start|stop|uninit)"
    echo "-i <id>      : ID (port name suffix)   [$ID]"
    echo "-o <own_id>  : owner uid               [$OWN]"
    echo "-m <mode>    : file permissions        [$MODE]"
    echo "-g <grp_id>  : argument with option    [$GRP]"
    echo "-V           : verbose output          [$VERBOSE]"
    echo "-h           : print this help message"
    echo ""
    echo
}

########################################
# name: vout
# description: print verbose message to stderr
# args:
#     msg: message
########################################
vout(){
    if [ "$VERBOSE" == "TRUE" ]
    then
	echo "$1" >&2
    fi
}

########################################
# name: imsg
# description: echos with indent
# args:
#     msg: message
#  indent: indent level
########################################
imsg(){
  OIFS=$IFS
  IFS=""
  msg_pad="                                        "
  let "msg_indent=${1}"
  shift
  all="${@}"
  printf "%s%s\n" ${msg_pad:0:${msg_indent}} ${all}
  IFS=$OIFS
}

########################################
# name: msg
# description: echos with default indent
# args:
#     msg: message
########################################
msg(){
 imsg $MSG_INDENT "${*}"
}

########################################
# name: exitError
# description: print use message to stderr
# args:
#     msg:        error message
#     returnCode: exit status to return
########################################
exitError(){
    echo >&2
    echo "$1" >&2
    echo >&2
    exit $2
}

##########################
# Script main entry point
##########################


# Argument processing
#if [ "$#" -eq 0 ];then
#    printUsage
#    exit 0
#fi

while getopts a:c:g:i:m:o:hV Option
do
    case $Option in
	a ) ADDR="${OPTARG}"
	;;
	c ) CMD="${OPTARG}"
	;;
	g ) GRP="${OPTARG}"
	;;
	i ) ID="${OPTARG}"
	;;
	o ) OWN="${OPTARG}"
	;;
	m ) MODE="${OPTARG}"
	;;
	V ) VERBOSE="TRUE"
	;;
	h)printUsage
	  exit 0
	;;
	*) exit 0 # getopts outputs error message
	;;
    esac
done


# call sigTrap on INT,TERM or EXIT
# trap sigTrap INT TERM EXIT

# reset trapped signals
# trap - INT TERM EXIT

vout "[ADDR : ${ADDR}]"
vout "[ID   : ${ID}]"
vout "[CMD  : ${CMD}]"
vout "[MODE : ${MODE}]"
vout "[GRP  : ${GRP}]"
vout "[OWN  : ${OWN}]"

#exit 0

if [ "${CMD}" == "uninit" ]
then
${DGRP_CFG} -v ${CMD} ${ID} ${ADDR}
else
${DGRP_CFG} -v -e never -m ${MODE} -o ${OWN} -g ${GRP} ${CMD} ${ID} ${ADDR} 4
fi


if [ "${CMD}" == "init" ]
then
 sleep 1
 chmod ${MODE} /dev/tty_dgrp_${ID}*
 chgrp dialout /dev/tty_dgrp_${ID}*
fi