#!/bin/sh
set -eu

chip="${TEST_GPIOD_CHIP:-}"
line="${TEST_GPIOD_LINE:-0}"

if [ -z "$chip" ]; then
	chip="$(gpiodetect | awk 'NR==1 { print $1 }')"
fi

if [ -z "$chip" ]; then
	echo "SKIP: no gpiochip exposed by the testbed"
	exit 77
fi

echo "Using chip=$chip line=$line"
gpiodetect
gpioinfo "$chip"
gpioget "$chip" "$line" >/dev/null

write_line="${TEST_GPIOD_WRITE_LINE:-}"
readback_line="${TEST_GPIOD_READBACK_LINE:-}"
if [ -n "$write_line" ] && [ -n "$readback_line" ]; then
	gpioset -z "$chip" "$write_line=1" &
	setter_pid=$!
	trap 'kill "$setter_pid" 2>/dev/null || true' EXIT INT TERM
	sleep 1

	value="$(gpioget "$chip" "$readback_line" | tr -d ' \t\r\n')"
	if [ "$value" != "1" ]; then
		echo "FAIL: expected readback line $readback_line to be 1, got '$value'"
		exit 1
	fi
fi
