#!/bin/sh

# Copyright (C) Konstantine Shevlakov <shevlakov@132lan.ru> 2024

get_vars(){
	dev=$(uci get mmconfig.@modem[0].device${m})
	net=$(uci get mmconfig.@modem[0].network${m} | awk -F [\;] '{gsub("allowed:\ |preferred:\ ","");gsub("\, ","\|");print $1}' | tr -d ' ')
	netpref=$(uci get mmconfig.@modem[0].network${m} | awk -F [\;] '{gsub("allowed:\ |preferred:\ ","");gsub("\, ","\|");print $2}' |tr -d ' ')
	bands=$(uci get mmconfig.@modem[0].bands${m} | awk '{gsub(" ","\|");print $0}')
}

for m in $(seq 0 5); do
	get_vars >/dev/null 2>&1
	if [ -n "${dev}" ]; then
		if [ -z "$bands" ]; then
			bands=$(echo $(mmcli -J -m $dev | jsonfilter -e '@["modem"]["generic"]["supported-bands"].*') | awk '{gsub("\ ","\|"); print $0}')
		fi
		
		if [ "$netpref" = "none" ] || [ -z "$netpref" ]; then
			PREF_ARG=""
		else
			PREF_ARG="--set-preferred-mode=$netpref"
		fi
		
		if [ -n "$net" ]; then
			mmcli -m $dev --set-allowed-modes="$net" $PREF_ARG 2>&1
		fi
		
		if [ -n "$bands" ]; then
			mmcli -m $dev --set-current-bands="$bands" 2>&1
		fi
		
		WWANIF="$WWANIF $(uci show network | grep "$dev" | awk -F [.] '{print $2}')"
	else
		break
	fi
done

for wwan in $WWANIF; do
	/usr/share/modeminfo/mmconfig_checker.sh "$wwan" &
done
