#!/bin/sh
#
# Copyright (C) 2018-2023 Ycarus (Yannick Chabanois) <ycarus@zugaina.org> for OpenMPTCProuter
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
# This script set lights on RUTX device
#
# It runs from cron, where no tracker sets OMR_TRACKER_DEVICE: each modem is
# found by its fixed USB path instead.

# $1: modem USB path, $2: led for gsm, umts, lte, then the signal leds and
# the signal percent each one needs, as "led:threshold"
_rutx_modem_leds() {
	local modemdata gen bar led
	modemdata=$(omr-modemmanager "$1" all)
	gen=$(echo $modemdata | cut -d ';' -f 5 | tr -d '\n')
	if [ "$gen" = "gsm" ]; then
		echo "default-on" > /sys/class/leds/$2/trigger
		echo "none" > /sys/class/leds/$3/trigger
		echo "none" > /sys/class/leds/$4/trigger
	elif [ "$gen" = "umts" ]; then
		echo "none" > /sys/class/leds/$2/trigger
		echo "default-on" > /sys/class/leds/$3/trigger
		echo "none" > /sys/class/leds/$4/trigger
	elif [ "$gen" = "lte" ]; then
		echo "none" > /sys/class/leds/$2/trigger
		echo "none" > /sys/class/leds/$3/trigger
		echo "default-on" > /sys/class/leds/$4/trigger
	fi
	bar=$(echo $modemdata | cut -d ';' -f 1 | tr -d '\n')
	# no modem (or no signal value) turns the signal leds off
	case "$bar" in
		''|*[!0-9]*) bar=0 ;;
	esac
	shift 4
	for led in "$@"; do
		if [ "$bar" -gt "${led##*:}" ]; then
			echo "default-on" > /sys/class/leds/${led%:*}/trigger
		else
			echo "none" > /sys/class/leds/${led%:*}/trigger
		fi
	done
}

if [ -n "$(grep RUTX /etc/board.json)" ] && [ -z "$(grep RUTX50 /etc/board.json)" ]; then
	_rutx_modem_leds '/sys/devices/platform/soc/60f8800.usb2/6000000.dwc3/xhci-hcd.1.auto/usb3/3-1' \
		mob_gen_2 mob_gen_3 mob_gen_4 \
		mob_ssid_1:0 mob_ssid_2:30 mob_ssid_3:50 mob_ssid_4:70 mob_ssid_5:90
	if [ -d /sys/class/leds/mob2_gen_2 ]; then
		_rutx_modem_leds '/sys/devices/platform/soc/8af8800.usb3/8a00000.dwc3/xhci-hcd.0.auto/usb1/1-1/1-1.2' \
			mob2_gen_2 mob2_gen_3 mob2_gen_4 \
			mob2_ssid_1:0 mob2_ssid_2:30 mob2_ssid_3:50 mob2_ssid_4:70 mob2_ssid_5:90
	fi
fi
if [ -n "$(grep RUTX /etc/board.json)" ] && [ -n "$(grep RUTX50 /etc/board.json)" ]; then
	_rutx_modem_leds '/sys/devices/platform/soc/8af8800.usb3/8a00000.dwc3/xhci-hcd.0.auto/usb2/2-1' \
		green:3g green:4g green:5g \
		green:rssi0:10 green:rssi1:50 green:rssi2:70
fi
