pmaports/main/postmarketos-mkinitfs-hook-maximum-attention/00-maximum-attention.sh
Mayeul Cantan e885f6a725 Add a maximum-attention hook to help with debugging boot issues ()
The hook flashes every LED it can find, as well as the vibration motor.
More paths are probably necessary to support more devices and kernels.
2018-02-22 22:10:19 +00:00

56 lines
1.1 KiB
Bash

#!/bin/sh
. ./init_functions.sh
BLINK_INTERVAL=2 # seconds
VIBRATION_DURATION=400 #ms
VIBRATION_INTERVAL=2 #s
find_leds() {
find /sys -name "max_brightness" | xargs -I{} dirname {}
}
find_vibrator() {
echo /sys/class/timed_output/vibrator
}
# blink_leds takes a list of LEDs as parameters,
# it iterates over every LED, and changes their value,
# alternating between max_brightness and 0 every BLINK_INTERVAL
blink_leds() {
state=false # false = off, true=on
while true; do
for led in $@; do
if [ "$state" = true ]; then
cat $led/max_brightness > $led/brightness
else
echo 0 > $led/brightness
fi
echo blinking LED: $led
done
sleep ${BLINK_INTERVAL}s
if [ "$state" = true ]; then
state=false
else
state=true
fi
done
}
# vibrate_loop vibrates each VIBRATION_INTERVAL for VIBRATION_DURATION
# it takes a timed_device path to the vibrator as $1
vibrate_loop() {
if [ ! -f $1/enable ]; then
return;
fi
while true; do
echo $VIBRATION_DURATION > $1/enable
sleep ${VIBRATION_INTERVAL}s
done
}
blink_leds $(find_leds) &
vibrate_loop $(find_vibrator) &
loop_forever