#!/bin/sh

# Set Reset switch GPIO
GPIO=3

[ -z $GPIO ] && echo "GPIO pin for resetd is not set" && echo "[resetd] GPIO undefined in /usr/sbin/resetd" > /dev/kmsg && exit

# Counter for button press until reset
count=0

# prepare the pin
if [ ! -d /sys/class/gpio/gpio${GPIO} ]; then
	echo "${GPIO}" > /sys/class/gpio/export
	echo "in" > /sys/class/gpio/gpio"${GPIO}"/direction
fi

# continuously monitor current value of reset switch
while [ true ]; do
	if [ "$(cat /sys/class/gpio/gpio"${GPIO}"/value)" -eq 1 ]; then
		count=0
	else
		count=$((count+1))

		# 20 counts =~ 5 seconds @ 0.25 sleep intervals
		if [ $count -eq 20 ]; then
			echo 'RESETTING FIRMWARE'
			firstboot
		fi
	fi
	# This interval uses 1% CPU. Less sleep = more CPU
	sleep 0.25
done
