#!/bin/sh
. /lib/functions.sh
. /lib/netifd/netifd-proto.sh

find_qmi_iface() {
	local cfg="$1"
	local tty="$2"

	local proto
	config_get proto "$cfg" proto
	[ "$proto" = qmi ] || return 0

	# bypass state vars here because 00-netstate could clobber .device
	local dev=$(uci_get network "$cfg" atport)

	if [ "${dev##*/}" = "${tty##*/}" ]; then
		#logger "DEVICENAME: $DEVICENAME, ACTION: $ACTION, cfg:$cfg" 
		if [ "$ACTION" = bind ]; then
			available=1
		elif [ "$ACTION" = unbind -o "$ACTION" = remove ]; then
			available=0
		fi
		# If interface is not already available, only then notify netifd
		`ifstatus cellular |  jsonfilter -e '@["available"]'` && status=1 || status=0
		if [ $status -ne $available ] ; then
			proto_set_available "$cfg" $available
		fi
	fi
}

case "$DEVICENAME" in
	tty*)
		[ -e "/dev/$DEVICENAME" ] || [ "$ACTION" = remove ] || exit 0
		config_load network
		config_foreach find_qmi_iface interface "/dev/$DEVICENAME"
	;;
esac

