#!/bin/sh /etc/rc.common
START=99

boot() {
	stop
	if  [[ ! `ls /etc/IEC104_DNP3_Configuration_MH.csv 2>/dev/null` ]] || [[ "`ls -l /etc/IEC104_DNP3_Configuration_MH.csv  | awk '{print$5}' 2>/dev/null`" == 0 ]]; then exit ; fi;
	if [ `uci get dnp3_104.main.enable` == 1 ]; then
		if [[ "`uci get serial1.Line.mode 2>/dev/null`" == "dnp3" ]]
		then
			rate=`uci get serial1.Line.Baud_Rate`
			/usr/bin/dnp3master "/dev/ttyS6" $rate reload &> /dev/null &
		else
			rate=`uci get serial1.Line.Baud_Rate`
			/usr/bin/dnp3master "/dev/ttyS3" $rate reload &> /dev/null &
		fi
		/usr/bin/dnp3-104 &> /dev/null &
	fi
}

start() {
	if [ `uci get dnp3_104.main.enable` == 1 ]; then
	    if [[ ! `ls /etc/IEC104_DNP3_Configuration_MH.csv 2>/dev/null` ]] || [[ "`ls -l /etc/IEC104_DNP3_Configuration_MH.csv  | awk '{print$5}' 2>/dev/null`" == 0 ]];
        then
		    echo "ERROR: Configuration file not present"
		    echo "ERROR: Configuration file not present" >> /tmp/luci_message_dnp3_104
		    exit
         fi
		if [[ "`uci get serial1.Line.mode 2>/dev/null`" == "dnp3" ]]
		then
			rate=`uci get serial1.Line.Baud_Rate`
			/usr/bin/dnp3master "/dev/ttyS6" $rate &> /dev/null &
		else
			rate=`uci get serial1.Line.Baud_Rate`
			/usr/bin/dnp3master "/dev/ttyS3" $rate &> /dev/null &
		fi
		/usr/bin/dnp3-104 &> /dev/null &
	fi
}

stop() {
	killall dnp3master 2>/dev/null
	killall dnp3-104 2>/dev/null
	return 0
}
restart() {
	stop
	file_name=`uci get dnp3_104.main.config_file 2>/dev/null`
	state=`uci get dnp3_104.main.enable 2>/dev/null`
	if [[ ! -f "$file_name" ]] && [[ $state == 1 ]]
	then
		echo "ERROR: Configuration file not present"
		echo "ERROR: Configuration file not present" >> /tmp/luci_message_dnp3_104
		exit
	elif [[ ! -s "$file_name" ]] && [[ $state == 1 ]]
	then
		echo "ERROR: Empty configuration file"
		echo "ERROR: Empty configuration file" >> /tmp/luci_message_dnp3_104
		exit
	fi
	if [ $state == 1 ]; then
		rm -rf /etc/IEC104_DNP3_Configuration_MH.csv 2>/dev/null
		cp "`uci get dnp3_104.main.config_file`" /etc/IEC104_DNP3_Configuration_MH.csv
		start
	fi
}
