#!/bin/sh

. /lib/functions/uci-defaults.sh

CFG=/etc/board.json
SLP=30

check_modem() {
	json_select "$2"
	json_get_vars id

	[ -z "$id" ] && {
		json_select ..
		return 0
	}

	#logger -t "board-track" "ls -d /sys/bus/usb/devices/$id/${id}*/tty?*"
	ttys=$(ls -d /sys/bus/usb/devices/$id/${id}*/tty?*)

	[ -n "$ttys" ] || { #FAILED TO FIND MODEM
		logger -t "board-track" "modem $id not detected"
		for m in /sys/class/gpio/modem*_power; do
			label="$(basename $m | awk -F_ '{print $1}')"
			mctl -s -m ${label}
			sleep 1
			mctl -p -m ${label}
		done
		sleep 5
		ip link set up dev wwan0 2>&1 >/dev/null
		ip link set up dev wwan1 2>&1 >/dev/null
		json_select ..
		return 1
	}

	[ -n "$(ip link show dev wwan0 | grep DOWN)" ] && ip link set up dev wwan0 2>&1 >/dev/null
	[ -n "$(ip link show dev wwan1 | grep DOWN)" ] && ip link set up dev wwan1 2>&1 >/dev/null

	#MODEM UP
	json_select ..
}

board_config_update
while true; do
	json_for_each_item check_modem modems
	sleep $SLP
	[ $SLP -lt 300 ] && SLP=$((SLP+30))
done
