openwrt-packages/net/lora-packet-forwarder/files/lora_pkt_fwd.init

71 lines
1.3 KiB
Bash
Executable File

#!/bin/sh /etc/rc.common
START=99
STOP=10
USE_PROCD=1
PROG=/usr/sbin/lora_pkt_fwd
CONFIGFILE=/etc/global_conf.json
reset_sx1301_board ()
{
local pin=$1
logger "lora_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
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
logger "lora_pkt_fwd: SX1301 reset completed"
}
generate_global_conf()
{
logger "lora_pkt_fwd: Generate ${CONFIGFILE}"
gen_lora_global_conf > ${CONFIGFILE}
}
start_service()
{
include /lib/functions
logger "lora_pkt_fwd: Start"
config_load lora_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 "lora_pkt_fwd: Stop"
killall lora_pkt_fwd
}