firmware/general/legacy/scripts/sbin/resetd

33 lines
755 B
Bash
Executable File

#!/bin/sh
# Set Reset switch GPIO
GPIO=
[ -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