#! /bin/sh
#The GPIO commands are only useful for HW2

start() {
        killall mbushub.elf
        echo -n "Initialising outputs for MBusHub"

        #Echo something into MBus Master, else it can be overload if masterport is set to UDP.
        echo q > /dev/ttyS4

        # M-Bus master #reset, set at startup
        echo 1   > /sys/class/gpio/export
        echo out > /sys/class/gpio/pioA1/direction
        echo 1   > /sys/class/gpio/pioA1/value

        # Digital input 1
        echo 3   > /sys/class/gpio/export
        echo in > /sys/class/gpio/pioA3/direction
        # cat /sys/class/gpio/pioA3/value

        # Digital input 2
        echo 4   > /sys/class/gpio/export
        echo in > /sys/class/gpio/pioA4/direction
        # cat /sys/class/gpio/pioA4/value


        # The next four GPIO operations are needed to enable
        # all M-Bus outputs
        #Enable 40V, set at startup
        echo 6   > /sys/class/gpio/export
        echo out > /sys/class/gpio/pioA6/direction
        echo 0   > /sys/class/gpio/pioA6/value

        #Enable each M-Bus output
        # Enable M-Bus Master 1-2
        echo 26  > /sys/class/gpio/export
        echo out > /sys/class/gpio/pioA26/direction
        echo 1   > /sys/class/gpio/pioA26/value

        # Enable M-Bus Master 3-4
        echo 27  > /sys/class/gpio/export
        echo out > /sys/class/gpio/pioA27/direction
        echo 1   > /sys/class/gpio/pioA27/value

        # Enable M-Bus Master 5-6
        echo 28  > /sys/class/gpio/export
        echo out > /sys/class/gpio/pioA28/direction
        echo 1   > /sys/class/gpio/pioA28/value

        # Enable M-Bus Master 7-8
        echo 29  > /sys/class/gpio/export
        echo out > /sys/class/gpio/pioA29/direction
        echo 1   > /sys/class/gpio/pioA29/value
        
        # Relay control, set from MBusHub, 1x set and 2x readpos.
        echo 5   > /sys/class/gpio/export
        echo out > /sys/class/gpio/pioA5/direction
        echo 74  > /sys/class/gpio/export
        echo in  > /sys/class/gpio/pioC10/direction
        echo 76  > /sys/class/gpio/export
        echo in  > /sys/class/gpio/pioC12/direction
        # echo 0   > /sys/class/gpio/pioA5/value
        # echo 1   > /sys/class/gpio/pioA5/value
        
        echo "done"
}


stop() {
        echo -n "Disabling outputs for MBusHub..."
        echo 3   > /sys/class/gpio/unexport
        echo 4   > /sys/class/gpio/unexport
        echo 5   > /sys/class/gpio/unexport
        echo 5   > /sys/class/gpio/unexport
        echo 6   > /sys/class/gpio/unexport
        echo 26  > /sys/class/gpio/unexport
        echo 27  > /sys/class/gpio/unexport
        echo 28  > /sys/class/gpio/unexport
        echo 29  > /sys/class/gpio/unexport
        echo "done"
}

restart() {
      stop
      start
}

# See how we were called.
case "$1" in
  start)
      start
      ;;
  stop)
      stop
      ;;
  restart|reload)
      restart
      ;;
  *)
      echo "Usage: $0 {start|stop|reload|restart}"
      exit 1
esac

exit $?
