#!/bin/sh . /usr/share/libubox/jshn.sh PS_ON=1 PS_OFF=2 MPS=0 MLBL="modem" modem_reset() { local label="$1" [ -e "/sys/class/gpio/${label}_reset/value" ] || return echo 1 > "/sys/class/gpio/${label}_reset/value" sleep 1 echo 0 > "/sys/class/gpio/${label}_reset/value" } modem_off() { local label="$1" [ -e "/sys/class/gpio/${label}_reset/value" ] || return echo 1 > "/sys/class/gpio/${label}_reset/value" } modem_power() { local label="$1" [ -e "/sys/class/gpio/${label}_power/value" ] || return # simulate power press echo 1 > "/sys/class/gpio/${label}_power/value" sleep 1 echo 0 > "/sys/class/gpio/${label}_power/value" } modem_list() { local list="modem" local label [ "$(modem_fetch_primary)" -eq 0 ] && { echo "${list}" return } for m in /sys/class/gpio/modem*_power; do label="$(basename $m | awk -F_ '{print $1}')" [ "${label}" != "modem" ] && list="${list},${label}" done echo "${list}" } modem_fetch_primary() { local modem modems primary json_init json_load_file "/etc/board.json" json_get_keys modems modems json_select modems for modem in $modems; do json_select "$modem" json_get_vars primary [ -n "$primary" ] && { echo 1 return } json_select .. done echo 0 } modem_is_available() { local label="$1" [ -e "/sys/class/gpio/${label}_power/value" ] } usage() { cat < Control modem power state. Options: -p, --power-on power on modem -s, --shutdown shutdown modem -r, --reboot reboot modem -m, --modem