#! /bin/sh
#
# Adapt the following parameters.
#
# Change permission to
#
# > chmod +x blitzortung
#
# Then try
#
# > ./blitzortung_init start
# > ./blitzortung_init restart
# > ./blitzortung_init stop
#
# Copy the script to /etc/init.d
# > cp blitzortung_init /etc/init.d/blitzortung
# and make a link
# > ln -s /etc/init.d/blitzortung /etc/rc.2
#
# You can also write your Settings in a file "/etc/blitzortung.conf"
# It will be included automatically, and the settings here will
# be overwritten
#



###############################################################
###    Main Settings                                        ###
###############################################################


# Program Settings
###################

PROGDIR=/home/user/
PROGNAME=blitzortung_tracker


# Blitzortung Settings
#######################

BO_USERNAME=JonDoe
BO_PASSWORD=xxxxxxxx
BO_REGION=1


# Board Settings
#################

# Baudrate according to jumper settings (hardware dependent!)
# see help output of supported speeds
# examples: 38400, 115200, 500000
BAUDRATE=115200

# Serial device, for example /dev/ttyS0 or /dev/ttyUSB0, /dev/ttyUSB1 and so on
DEVICE=/dev/ttyUSB0


# GPS Settings
###############

# GPS: "SiRF", "Garmin", "SNAV" or "-"
GPS=SiRF

# GPS: Activate SBAS (1=on, 0=off)
SBAS=0

# GPS: Baudrate (4800, 9600, 19200 or 38400)
GPS_BAUDRATE=4800


# HTTP-Server
##############

# Set a port number to activate
# Hint: 80 may be already in use by local web server
HTTPPORT=8080


# Logging to files
####################

# Log to syslog (1=enable)
SYSLOG=0

# Logdir (like "bla/" or "/var/log/bo" or nothing)
LOGDIR=

# Hints:
# Specifiy a file like LOGL=general.log
# value 0 or nothing => disabled

# General log
LOGL=0

# Sysinfo
LOGI=0

# Board Output
LOGO=0

# Sent info
LOGS=0

# Parameter updates
LOGU=0

# HTTP-Server
LOGH=0


# Logging to stdout/stderr (files)
###################################

# Only useful if you specify a file for FSTDOUT
# Use 1 for enable, eg. VERBL=1

# General log
VERBL=0

# Sysinfo
VERBI=0

# Board Output
VERBO=0

# Sent info
VERBS=0

# Parameter updates
VERBU=0

# HTTP-Server
VERBH=0



# Other arguments
##################

# Other arguments like -n, -d, -e
# or additional server -as, -ap, -au, -aw
# See output of "blitzortung_tracker -h" for more info
#OTHERARG=""



# Advanced Program Settings
############################

# User (should not be root !!!)
#PROGUSER="username"

# Nice Level (good value is -10 ==> higher prority)
# Hint: The tracker doesn't use much CPU, but if the computer is overloaded
# due to other programs, then the serial data may be stalled for some seconds.
# In such a case the tracker may think that the board is gone (timeout)
# and may try to reconnect.
#PROGNICE=-10

# Standard output file
#FSTDOUT="/dev/null"

# Standard error output
#FSTDERR="/dev/null"















###############################################################
########        DON'T EDIT BELOW THIS LINE        #############
###############################################################


[ -e /etc/blitzortung.conf ] && . /etc/blitzortung.conf

PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin
CMDARGS=""
STDOUT=""
[ "$SBAS" != "0" -a "$SBAS" != "" ] && CMDARGS="$CMDARGS -s"
[ "$BAUDRATE" != "0" -a "$BAUDRATE" != "" ] && CMDARGS="$CMDARGS -bt $BAUDRATE"
[ "$GPS_BAUDRATE" != "0" -a "$GPS_BAUDRATE" != "" ] && CMDARGS="$CMDARGS -bg $GPS_BAUDRATE"
[ "$HTTPPORT" != "0" -a "$HTTPPORT" != "" ] && CMDARGS="$CMDARGS -p $HTTPPORT"
[ "$SYSLOG" = "1" ] && CMDARGS="$CMDARGS -L"
[ "$LOGDIR" = "" ] && LOGDIR=$PROGDIR
[ "$LOGL" != "0" -a "$LOGL" != "" ] && CMDARGS="$CMDARGS -ll $LOGDIR$LOGL"
[ "$LOGI" != "0" -a "$LOGI" != "" ] && CMDARGS="$CMDARGS -li $LOGDIR$LOGI"
[ "$LOGO" != "0" -a "$LOGO" != "" ] && CMDARGS="$CMDARGS -lo $LOGDIR$LOGO"
[ "$LOGS" != "0" -a "$LOGS" != "" ] && CMDARGS="$CMDARGS -ls $LOGDIR$LOGS"
[ "$LOGU" != "0" -a "$LOGU" != "" ] && CMDARGS="$CMDARGS -lu $LOGDIR$LOGU"
[ "$LOGH" != "0" -a "$LOGH" != "" ] && CMDARGS="$CMDARGS -lh $LOGDIR$LOGH"
[ "$VERBL" = "1" ] && CMDARGS="$CMDARGS -vl"
[ "$VERBI" = "1" ] && CMDARGS="$CMDARGS -vi"
[ "$VERBO" = "1" ] && CMDARGS="$CMDARGS -vo"
[ "$VERBS" = "1" ] && CMDARGS="$CMDARGS -vs"
[ "$VERBU" = "1" ] && CMDARGS="$CMDARGS -vu"
[ "$VERBH" = "1" ] && CMDARGS="$CMDARGS -vh"
[ "$GPS" = "" -o "$GPS" = "0" ] && GPS="SiRF"
[ "$DEVICE" = "" -o "$DEVICE" = "0" ] && GPS="-"
[ "$FSTDOUT" = "" ] && FSTDOUT="/dev/null"
[ "$FSTDERR" = "" ] && FSTDERR="/dev/null"

COMMAND="$PROGDIR$PROGNAME $CMDARGS $OTHERARG $GPS $DEVICE $BO_USERNAME $BO_PASSWORD $BO_REGION"

### User ###
if [ "$PROGUSER" != "0" -a "$PROGUSER" != "" ]; then
    sudo -V &> /dev/null

    if [ $? -eq 0 ]; then
        COMMAND="sudo -u $PROGUSER $COMMAND"
    else
        COMMAND="su -c '"$COMMAND"' $PROGUSER"
    fi
fi

### Nice level ###
[ "$PROGNICE" != "0" -a "$PROGNICE" != "" ] && COMMAND="nice -n$PROGNICE $COMMAND"



###############################################################


case "$1" in
  start)

    if [ "$BO_PASSWORD" = "xxxxxxxx" ]; then
        echo Password xxxxxxxx not possible!
        exit 1
    fi

	cd $PROGDIR &> /dev/null
    echo "Starting '$COMMAND' "
    $COMMAND 1>>$FSTDOUT 2>>$FSTDERR &

    ;;
  stop)
    echo -n "Shutting down '$PROGNAME' "
    killall $PROGNAME
    echo

    ;;
  restart)
    $0 stop
    sleep 1
    $0 start
    ;;
  *)
    echo "Usage: ... {start|stop|restart}"
    exit 1
    ;;
esac

exit 0
