summaryrefslogtreecommitdiff
path: root/recipes-connectivity/lora/lora-network-server
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-connectivity/lora/lora-network-server')
-rwxr-xr-xrecipes-connectivity/lora/lora-network-server/lora-network-server.init131
1 files changed, 91 insertions, 40 deletions
diff --git a/recipes-connectivity/lora/lora-network-server/lora-network-server.init b/recipes-connectivity/lora/lora-network-server/lora-network-server.init
index 8e2e729..92e3b48 100755
--- a/recipes-connectivity/lora/lora-network-server/lora-network-server.init
+++ b/recipes-connectivity/lora/lora-network-server/lora-network-server.init
@@ -8,7 +8,8 @@ ENABLED="yes"
[ -f /etc/default/$NAME ] && source /etc/default/$NAME
-
+daemon_start="/usr/sbin/start-stop-daemon --start --background"
+daemon_stop="/usr/sbin/start-stop-daemon --stop --quiet --oknodo"
run_dir=/var/run/lora
conf_dir=/var/config/lora
conf_file=$conf_dir/lora-network-server.conf
@@ -31,6 +32,7 @@ port2=/sys/devices/platform/mts-io/ap2
lora_1_0_hw="MTAC-LORA-1.0"
lora_1_5_h_hw="MTAC-LORA-1.5"
lora_2_1_hw="MTAC-LORA-2.1"
+lora_2g4_hw="MTAC-LORA-2G4-0.0"
lora_mtac_id="MTAC-LORA"
lora_mtac_003_id="MTAC-003"
@@ -41,15 +43,12 @@ lora_mtcap_id="MTCAP-LORA"
lora_mtcap_id868="MTCAP-LORA-868"
lora_mtcap_id915="MTCAP-LORA-915"
-mtcdt3_id="MTCDT3"
-lora_mtcdt3_id="MTCDT3-LORA"
-lora_mtcdt3_id868="MTCDT3-LORA-868"
-lora_mtcdt3_id915="MTCDT3-LORA-915"
-
lora_mtcap3_id="MTCAP3"
lora_mtcap3_id868="MTCAP3-003E00"
lora_mtcap3_id915="MTCAP3-003U00"
+lora_mtac_2g4_id="MTAC-LORA-2G4"
+
lora_mtac_g_id="MTAC-LORA-G"
lora_mtac_g16_id868="MTAC-LORA-G16-868"
lora_mtac_g16_id915="MTAC-LORA-G16-915"
@@ -61,19 +60,33 @@ dual_cards_installed=false
gps_path="/dev/gps0"
read_lora_hw_info() {
- hw_id=$(mts-io-sysfs show product-id 2> /dev/null)
+ set +e
+
+ hw_id=$(mts-io-sysfs show hw-version)
# product-id of first lora card
lora_id=$(mts-io-sysfs show lora/product-id 2> /dev/null)
+ if [ $? -ne 0 ]; then
+ lora_id="NONE"
+ fi
lora_eui=$(mts-io-sysfs show lora/eui 2> /dev/null)
+ if [ $? -ne 0 ]; then
+ lora_eui=$(mts-io-sysfs show mac-eth)
+ lora_eui=${lora_eui:0:8}":FF:FF"${lora_eui:8:16}
+ fi
# remove all colons
lora_eui_raw=${lora_eui//:}
lora_hw=$(mts-io-sysfs show lora/hw-version 2> /dev/null)
+ if [ $? -ne 0 ]; then
+ lora_hw="NONE"
+ fi
if [ -d $port1 ] && [[ $(cat $port1/hw-version) =~ "LORA-1.5" ]] && [ -d $port2 ] && [[ $(cat $port2/hw-version) =~ "LORA-1.5" ]]; then
dual_cards_installed=true
elif [ -d $port1 ] && [[ $(cat $port1/hw-version) =~ "MTAC-003" ]] && [ -d $port2 ] && [[ $(cat $port2/hw-version) =~ "MTAC-003" ]]; then
dual_cards_installed=true
+ elif [ -d $port1 ] && [[ $(cat $port1/hw-version) =~ "LORA-2G4" ]] && [ -d $port2 ] && [[ $(cat $port2/hw-version) =~ "LORA-2G4" ]]; then
+ dual_cards_installed=true
fi
if [[ "$dual_cards_installed" = "true" ]] && [ -d $port2 ] && [[ $(cat $port2/hw-version) =~ "LORA-1.5" || $(cat $port2/hw-version) =~ "LORA-2G4" || $(cat $port2/hw-version) =~ "MTAC-003" ]]; then
@@ -85,6 +98,20 @@ read_lora_hw_info() {
lora_2_eui_raw=${lora_2_eui//:}
fi
+ set -e
+
+ # Check USB id for Semtech Card
+ if [[ $(lsusb | grep 05c9:5740) =~ "05c9:5740" ]] && [[ ! "$lora_id" =~ "$lora_mtac_2g4_id" ]]; then
+ lora_id=$lora_mtac_2g4_id
+ lora_hw=$lora_2g4_hw
+ lora_eui=$(mts-io-sysfs show mac-eth)
+ lora_eui=${lora_eui:0:8}":FF:FF"${lora_eui:8:16}
+ LORA_CAPABLE=true
+ # Check USB id for Semtech Card in Bootloader mode
+ elif [[ $(lsusb | grep 0483:df11) =~ "0483:df11" ]]; then
+ echo "Semtech 2g4 MTAC card detected in Bootloader Mode, remove power from Conduit and restore"
+ return 1
+ fi
}
setup_mtcdt3() {
@@ -99,24 +126,6 @@ setup_mtcdt3() {
lora_2_id=$lora_id
}
-hardware_found() {
- if [[ "$lora_id" =~ "$lora_mtac_g_id" ]]; then
- setup_mtcdt_2_1
- elif [[ "$lora_id" =~ "$lora_mtac_2g4_id" ]]; then
- setup_mtcdt_2g4
- elif [[ "$lora_id" =~ "$lora_mtac_003_id" ]]; then
- setup_mtcdt003
- elif [[ "$lora_id" =~ "$lora_mtac_id" ]]; then
- setup_mtcdt
- elif [[ "$lora_id" =~ "$lora_mtcap3_id" ]]; then
- setup_mtcap3
- elif [[ "$lora_id" =~ "$lora_mtcap_id" ]]; then
- setup_mtcap
- else
- return 1
- fi
-}
-
setup_mtcdt_2g4() {
mts-io-sysfs store lora/reset 0
mts-io-sysfs store lora/boot 0
@@ -264,6 +273,25 @@ setup_mtcap() {
return 0
}
+
+hardware_found() {
+ if [[ "$lora_id" =~ "$lora_mtac_g_id" ]]; then
+ setup_mtcdt_2_1
+ elif [[ "$lora_id" =~ "$lora_mtac_2g4_id" ]]; then
+ setup_mtcdt_2g4
+ elif [[ "$lora_id" =~ "$lora_mtac_003_id" ]]; then
+ setup_mtcdt003
+ elif [[ "$lora_id" =~ "$lora_mtac_id" ]]; then
+ setup_mtcdt
+ elif [[ "$lora_id" =~ "$lora_mtcap3_id" ]]; then
+ setup_mtcap3
+ elif [[ "$lora_id" =~ "$lora_mtcap_id" ]]; then
+ setup_mtcap
+ else
+ return 1
+ fi
+}
+
do_start() {
# create run directory
mkdir -p $run_dir/1
@@ -311,30 +339,39 @@ do_start() {
echo -n "Starting $NAME: "
# start network server
- start-stop-daemon --start --background --make-pidfile \
- --pidfile $net_server_pidfile --startas /bin/bash -- -c "exec $net_server \
- -c $conf_file --lora-eui $lora_eui --lora-hw-1 $lora_hw --lora-prod-1 $lora_id $lora_2_args \
- --lora-path $run_dir \
- --noconsole 2>&1"
+
+ lns_exec="exec $net_server -c $conf_file --lora-eui $lora_eui --lora-hw-1 $lora_hw --lora-prod-1 $lora_id $lora_2_args \
+ --lora-path $run_dir --noconsole 2>&1"
+ $daemon_start --make-pidfile --pidfile $net_server_pidfile --startas /bin/bash -- -c "$lns_exec"
+
+ echo "check process lora-network-server with pidfile $net_server_pidfile
+ program start = \"$daemon_start --make-pidfile --pidfile $net_server_pidfile --startas /bin/bash -- -c '$lns_exec'\"
+ program stop = \"$daemon_stop --pidfile $net_server_pidfile --retry TERM/60/KILL/5\"" > /etc/monit.d/lora-network-server
if [ "$no_lora_hw" != "true" ]; then
# start packet forwarder
sleep 4
+ pkf_exec="exec $pkt_fwd $pkt_fwd_options -l $pkt_fwd_log"
- /usr/sbin/start-stop-daemon --chdir $run_dir/1 --start --background --make-pidfile \
- --pidfile $pkt_fwd_pidfile --startas /bin/bash \
- -- -c "exec $pkt_fwd $pkt_fwd_options 2>&1"
+ $daemon_start --chdir $run_dir/1 --make-pidfile --pidfile $pkt_fwd_pidfile --startas /bin/bash -- -c "$pkf_exec"
+
+ echo "check process lora-pkt-fwd-1 with pidfile $pkt_fwd_pidfile
+ program start = \"$daemon_start --chdir $run_dir/1 --make-pidfile --pidfile $pkt_fwd_pidfile --startas /bin/bash -- -c '$pkf_exec'\"
+ program stop = \"$daemon_stop --pidfile $pkt_fwd_pidfile --retry 5\"" > /etc/monit.d/lora-pkt-fwd-1
if [ "$dual_cards_installed" == "true" ]; then
- /usr/sbin/start-stop-daemon --chdir $run_dir/2 --start --background --make-pidfile \
- --pidfile $pkt_fwd_2_pidfile --startas /bin/bash \
- -- -c "exec $pkt_fwd_2 $pkt_fwd_options -l $pkt_fwd_2_log"
+ pkf_2_exec="exec $pkt_fwd_2 $pkt_fwd_options -l $pkt_fwd_2_log"
+ $daemon_start --chdir $run_dir/2 --make-pidfile --pidfile $pkt_fwd_2_pidfile --startas /bin/bash -- -c "$pkf_2_exec"
+ echo "check process lora-pkt-fwd-2 with pidfile $pkt_fwd_2_pidfile
+ program start = \"$daemon_start --chdir $run_dir/2 --make-pidfile --pidfile $pkt_fwd_2_pidfile --startas /bin/bash -- -c '$pkf_2_exec'\"
+ program stop = \"$daemon_stop --pidfile $pkt_fwd_2_pidfile --retry 5\"" > /etc/monit.d/lora-pkt-fwd-2
fi
fi
renice -n -20 -p $(pgrep lora-network-se)
renice -n -20 -p $(pgrep $(basename $pkt_fwd))
+ monit reload
echo "OK"
}
@@ -342,10 +379,24 @@ do_start() {
do_stop() {
echo -n "Stopping $NAME: "
- start-stop-daemon --stop --quiet --oknodo --pidfile $net_server_pidfile --retry TERM/60/KILL/5
- start-stop-daemon --stop --quiet --oknodo --pidfile $pkt_fwd_pidfile --retry 5
- start-stop-daemon --stop --quiet --oknodo --pidfile $pkt_fwd_2_pidfile --retry 5
- rm -f $net_server_pidfile $pkt_fwd_pidfile
+ if monit summary lora-network-server > /dev/null 2>&1; then
+ monit unmonitor lora-network-server
+ start-stop-daemon --stop --quiet --oknodo --pidfile $net_server_pidfile --retry TERM/60/KILL/5
+ rm -f $net_server_pidfile
+ fi
+ if monit summary lora-pkt-fwd-1 > /dev/null 2>&1; then
+ monit unmonitor lora-pkt-fwd-1
+ start-stop-daemon --stop --quiet --oknodo --pidfile $pkt_fwd_pidfile --retry 5
+ rm -f $pkt_fwd_pidfile
+ fi
+ if monit summary lora-pkt-fwd-2 > /dev/null 2>&1; then
+ monit unmonitor lora-pkt-fwd-2
+ start-stop-daemon --stop --quiet --oknodo --pidfile $pkt_fwd_2_pidfile --retry 5
+ rm -f $pkt_fwd_2_pidfile
+ fi
+ rm -rf /etc/monit.d/lora*
+ monit reload
+
echo "OK"
}