mirror of https://github.com/OpenIPC/firmware.git
33 lines
755 B
Bash
Executable File
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
|