#!/bin/sh # This script is intended to be used on MTAC-003V3 platform, it performs # the following actions: # - export/unpexort pioC23 and pioB13 used to reset the SX1302 chip and setup AP2_NRESET # - export/unexport pioC24 used to reset the optional SX1261 radio used for LBT/Spectral Scan # # Usage examples: # ./reset_lgw.sh stop # ./reset_lgw.sh start # GPIO mapping has to be adapted with HW # SX1302_RESET_PIN=87 # SX1302 reset AP2_NRESET_PIN=45 # AP2_NRESET SX1261_RESET_PIN=88 # SX1261 reset (LBT / Spectral Scan) SX1302_RESET_pio=C23 # pio for SX1303 reset AP2_NRESET_pio=B13 # pio for AP1_NRESET SX1261_NRESET_pio=C24 # pio for SX1261 NRESET WAIT_GPIO() { sleep 0.1 } init() { # setup GPIOs echo "$SX1302_RESET_PIN" > /sys/class/gpio/export; WAIT_GPIO echo "$SX1261_RESET_PIN" > /sys/class/gpio/export; WAIT_GPIO echo "$AP2_NRESET_PIN" > /sys/class/gpio/export; WAIT_GPIO # set GPIOs as output echo "out" > /sys/class/gpio/pio$SX1302_RESET_pio/direction; WAIT_GPIO echo "out" > /sys/class/gpio/pio$SX1261_NRESET_pio/direction; WAIT_GPIO echo "out" > /sys/class/gpio/pio$AP2_NRESET_pio/direction; WAIT_GPIO } reset() { # write output for AP2_NRESET and SX1303 reset echo "1" > /sys/class/gpio/pio$AP2_NRESET_pio/value; WAIT_GPIO echo "1" > /sys/class/gpio/pio$SX1302_RESET_pio/value; WAIT_GPIO echo "0" > /sys/class/gpio/pio$SX1302_RESET_pio/value; WAIT_GPIO echo "0" > /sys/class/gpio/pio$SX1261_NRESET_pio/value; WAIT_GPIO echo "1" > /sys/class/gpio/pio$SX1261_NRESET_pio/value; WAIT_GPIO } term() { # cleanup all GPIOs if [ -d /sys/class/gpio/pio$SX1302_RESET_pio ] then echo "$SX1302_RESET_PIN" > /sys/class/gpio/unexport; WAIT_GPIO fi if [ -d /sys/class/gpio/pio$SX1261_NRESET_pio ] then echo "$SX1261_RESET_PIN" > /sys/class/gpio/unexport; WAIT_GPIO fi if [ -d /sys/class/gpio/pio$AP2_NRESET_pio ] then echo "$AP2_NRESET_PIN" > /sys/class/gpio/unexport; WAIT_GPIO fi } case "$1" in start) term # just in case init reset ;; stop) reset term ;; *) echo "Usage: $0 {start|stop}" exit 1 ;; esac