#!/bin/sh
# R1350 LED GPIO runtime probe. No flash writes, no reboot.
# Run on the known-good YA105 v3 image and observe both physical LEDs.

set_led_class() {
	name="$1" value="$2"
	p="/sys/class/leds/$name/brightness"
	[ -e "$p" ] || return 1
	echo none > "/sys/class/leds/$name/trigger" 2>/dev/null || true
	echo "$value" > "$p"
}

raw_gpio() {
	gpio="$1" value="$2"
	base=/sys/class/gpio
	[ -d "$base/gpio$gpio" ] || echo "$gpio" > "$base/export" 2>/dev/null || return 1
	echo out > "$base/gpio$gpio/direction" 2>/dev/null || true
	echo "$value" > "$base/gpio$gpio/value"
}

all_off() {
	for n in blue:system yellow:system blue:function yellow:function; do set_led_class "$n" 0 2>/dev/null || true; done
	# Candidate AC2350 GPIOs are active-low. High means off.
	for g in 7 8 15; do raw_gpio "$g" 1 2>/dev/null || true; done
}

probe_class() {
	name="$1"
	all_off
	echo "=== LED class: $name (ON for 3 seconds) ==="
	set_led_class "$name" 1 || echo "missing class: $name"
	sleep 3
	set_led_class "$name" 0 2>/dev/null || true
	sleep 1
}

probe_gpio() {
	g="$1"
	all_off
	echo "=== raw GPIO $g active-low (ON for 3 seconds) ==="
	raw_gpio "$g" 0 || echo "GPIO $g is busy/unavailable"
	sleep 3
	raw_gpio "$g" 1 2>/dev/null || true
	sleep 1
}

trap 'all_off' EXIT INT TERM

echo "Record which physical LED and color lights in every step."
for n in blue:system yellow:system blue:function yellow:function; do probe_class "$n"; done
for g in 7 8 15; do probe_gpio "$g"; done
all_off
echo "DONE"
