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

USE_PROCD=1

PROG=/usr/sbin/pico_pkt_fwd
CONFIGFILE=/etc/global_conf.json

reset_sx1301_board ()
{
	local pin=$1

	logger "pico_pkt_fwd: Reset SX1301 with pin ${pin}"

	if [ -d "/sys/class/gpio/gpio${pin}" ]
	then
		echo 1 > /dev/null
	else
		echo ${pin} > /sys/class/gpio/export
		echo "out" > /sys/class/gpio/gpio${pin}/direction
		sleep 1
	fi

	echo "1" > /sys/class/gpio/gpio${pin}/value
	sleep 5
	echo "0" > /sys/class/gpio/gpio${pin}/value
	sleep 1
	echo "0" > /sys/class/gpio/gpio${pin}/value
	sleep 1
	echo "in" > /sys/class/gpio/gpio${pin}/direction
	sleep 1

	logger "pico_pkt_fwd: SX1301 reset completed"
}

generate_global_conf()
{
	logger "pico_pkt_fwd: Generate ${CONFIGFILE}"
	gen_lora_global_conf > ${CONFIGFILE}
}

start_service()
{
	include /lib/functions

	logger "pico_pkt_fwd: Start"

	config_load pico_pkt_fwd

	generate_global_conf

	local reset_enable=$(uci get lora-global.SX1301_conf.enable_reset_pin)
	
	if [ ${reset_enable} == 1 ]; then
		reset_sx1301_board $(uci get lora-global.SX1301_conf.reset_pin)
	fi

	procd_open_instance
	procd_set_param command $PROG
	procd_set_param file ${CONFIGFILE}
	procd_set_param file /etc/config/lora-global
	procd_set_param respawn

	procd_set_param stdout 1
	procd_set_param stderr 1

	procd_close_instance
}

stop_service() {
    logger "pico_pkt_fwd: Stop"
    killall pico_pkt_fwd 
}
