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

boot() {
	if [ `uci get dlms_client.dlms.state 2>/dev/null` == 1 ]; then
                test_valid_values 2>/dev/null
		start &> /dev/null
	fi		
}

start() {
	if [[ "`uci get serial1.Line.mode 2>/dev/null`" == "dlms" || "`uci get serial.Line.mode 2>/dev/null`" == "dlms" ]]
	then
		/usr/sbin/dlms_client.sh &
		/usr/sbin/dlms_client_wd.sh &
	fi
}

stop() {
	kill -9 `pidof dlms-client` 2>/dev/null
	ps | grep dlms_client_wd | grep bin | awk '{print $1}' | head -n1 | xargs kill -9 2>/dev/null
	return 0
}

reload() {
        test_valid_values 2>/dev/null
	stop > /dev/null
	if [[ `uci get dlms_client.dlms.state 2>/dev/null` == 1 ]] &&
	   [[ "`uci get serial1.Line.mode 2>/dev/null`" != "dlms" ]] &&
	   [[ "`uci get serial.Line.mode 2>/dev/null`" != "dlms" ]]
	then
		echo "WARNING: Serial 1 or Serial 2 Mode is not DLMS Client" >> /tmp/luci_message_dlms
	fi
	if [ `uci get dlms_client.dlms.state 2>/dev/null` == 1 ]; then
		start > /dev/null
	fi
}

test_valid_values() {
        if [[ "`uci get dlms_client.config.clt_addrs`" == "" ]]; then
            uci set dlms_client.config.clt_addrs=32
        fi
        if [[ "`uci get dlms_client.config.svr_addrs`" == "" ]]; then
            uci set dlms_client.config.svr_addrs=16640
        fi
        if [[ "`uci get dlms_client.config.ip_time`" == "" ]]; then
            uci set dlms_client.config.ip_time=10
        fi
        if [[ "`uci get dlms_client.config.bp_time`" == "" ]]; then
            uci set dlms_client.config.bp_time=15
        fi
        if [[ "`uci get dlms_client.config.ep_time`" == "" ]]; then
            uci set dlms_client.config.ep_time=15
        fi
        if [[ "`uci get dlms_client.config.lp1_time`" == "" ]]; then
            uci set dlms_client.config.lp1_time=60
        fi
        uci commit
}

