#!/bin/sh
### BEGIN INIT INFO
# Provides:          Starting prtsoft printer software
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description:
# Description:
### END INIT INFO
# Author: hkoelle@carl-valentin.de

DAEMON_prtsoft=/opt/prtsoft.elf

# loglevel deaktivieren fuer serielle schnittstelle
echo "0" > /proc/sys/kernel/printk

# Action
case "$1" in
    start)
        set -e
        if [ -d "/home/user/update" ] ; then
            echo "Found update in /home/user/update - copy to /"
            cp -r -f /home/user/update/* / &&
            rm -r -f /home/user/update
        fi &&
        if [ ! -f $DAEMON_prtsoft ]; then
            echo "Error: can't start prtsoft: file /opt/prtsoft.elf not found"
            exit "1"
        fi
        echo "Loading FPGA ..." &&
        /opt/fpga_load /opt/fpgaLoadedAfterBoot.bit &&
        if [ "$(lsmod | grep KM_CvKernelAccess)" == "" ] ; then
            modprobe KM_CvKernelAccess.ko
        fi &&
        ps | awk '/\/opt\/boot.elf/{exit -1}' &&
        echo -e "\001TD\"Starting prtsoft...\n \";1;1;0\027" > /dev/ttyO1 &&
        echo -e "Set the RTC" &&
        hwclock -s -u -f /dev/rtc1 &&
        hwclock -w -u -f /dev/rtc1 &&
        start-stop-daemon -S -b -x $DAEMON_prtsoft &&
        echo "done."
        ;;
    quickstart)
        set -e
        if [ -d "/home/user/update" ] ; then
            echo "Found update in /home/user/update - copy to /"
            cp -r -f /home/user/update/* / &&
            rm -r -f /home/user/update
            echo "Loading FPGA ..." &&
            /opt/fpga_load /opt/fpgaLoadedAfterBoot.bit &&
            if [ "$(lsmod | grep KM_CvKernelAccess)" == "" ] ; then
                modprobe KM_CvKernelAccess.ko
            fi
        fi &&
        if [ ! -f $DAEMON_prtsoft ]; then
            echo "Error: can't start prtsoft: file /opt/prtsoft.elf not found"
            exit "1"
        fi
        echo -e "\001TD\"Starting prtsoft...\n \";1;1;0\027" > /dev/ttyO1 &&
        hwclock -s -u -f /dev/rtc1 &&
        hwclock -w -u -f /dev/rtc1 &&
        start-stop-daemon -S -b -x $DAEMON_prtsoft &&
        echo "done."
        ;;
    stop)
        # stoppe prtsoft
        start-stop-daemon -K -x $DAEMON_prtsoft
        # display steht auf 115200 baud, deshalb seriell auf 115200
        stty 115200 -F /dev/ttyO1
        # display ruecksetzen auf 57600 baud sonst funktioniert es nach erneutem prtsoft start nicht mehr
        echo -e "\001TO75\027" > /dev/ttyO1
        # display steht auf 57600 baud, deshalb seriell auf 57600
        stty 57600 -F /dev/ttyO1
        echo -e "\001TD\"prtsoft stopped.\n \";1;1;0\027" > /dev/ttyO1
        ;;
    restart)
        echo "Restarting prtsoft.."
        $0 stop
        $0 start
        echo "done."
        ;;
    *)
        echo "Usage: $0 {start|quickstart|stop|restart}"
        exit 1
        ;;
esac

exit 0
