diff options
Diffstat (limited to 'recipes-connectivity/lora/lora-network-server')
-rwxr-xr-x | recipes-connectivity/lora/lora-network-server/lora-network-server.init | 131 |
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" } |