mirror of
https://github.com/FunKey-Project/FunKey-OS.git
synced 2025-12-12 15:48:51 +01:00
add Recovery menu
Signed-off-by: Michel-FK <michel.stempin@funkey-project.com>
This commit is contained in:
parent
4c3b75801a
commit
292c8b82d9
222
Recovery/board/funkey/rootfs-overlay/usr/local/sbin/menu
Executable file
222
Recovery/board/funkey/rootfs-overlay/usr/local/sbin/menu
Executable file
@ -0,0 +1,222 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /usr/local/lib/utils
|
||||
|
||||
# Display meny item
|
||||
menu_display () {
|
||||
local entry=${1}
|
||||
|
||||
clear_notif
|
||||
case ${entry} in
|
||||
0)
|
||||
|
||||
# USB mount/unmount
|
||||
mount | grep -q /dev/mmcblk0p3
|
||||
if [ $? -eq 0 ]; then
|
||||
message="USB mount"
|
||||
else
|
||||
message="USB unmount"
|
||||
fi
|
||||
;;
|
||||
|
||||
1)
|
||||
|
||||
# USB check
|
||||
message="USB check"
|
||||
;;
|
||||
|
||||
2)
|
||||
|
||||
# USB format
|
||||
message="USB format"
|
||||
;;
|
||||
|
||||
3)
|
||||
|
||||
# Network enable/disable
|
||||
if [ -e /mnt/usbnet ]; then
|
||||
message="Network disable"
|
||||
else
|
||||
message="Network enable"
|
||||
fi
|
||||
;;
|
||||
|
||||
4)
|
||||
|
||||
# QR code
|
||||
message="QR code"
|
||||
;;
|
||||
|
||||
5)
|
||||
|
||||
# Factory tests enable/disable
|
||||
if [ -e /mnt/.assembly_tests ]; then
|
||||
message="Factory tests disable"
|
||||
else
|
||||
message="Factory tests enable"
|
||||
fi
|
||||
;;
|
||||
|
||||
6)
|
||||
|
||||
# Exit Recovery
|
||||
message="Exit Recovery"
|
||||
;;
|
||||
esac
|
||||
notif "${message}"
|
||||
}
|
||||
|
||||
# Run menu item
|
||||
menu_run () {
|
||||
local entry=${1}
|
||||
|
||||
case ${entry} in
|
||||
0)
|
||||
|
||||
# USB mount/unmount
|
||||
mount | grep -q /dev/mmcblk0p3
|
||||
if [ $? -eq 0 ]; then
|
||||
notif "${message}..."
|
||||
share start
|
||||
if [ $? -ne 0 ]; then
|
||||
notif "${message}...^Cannot mount USB!"
|
||||
else
|
||||
message="USB unmount"
|
||||
notif "${message}"
|
||||
fi
|
||||
else
|
||||
notif "${message}..."
|
||||
share stop
|
||||
if [ $? -ne 0 ]; then
|
||||
notif "${message}...^Cannot unmount USB!"
|
||||
else
|
||||
for file in $(ls /mnt/FunKey-*.swu); do
|
||||
swupdate -i "${file}"
|
||||
if [ $? -ne 0 ]; then
|
||||
notif "${message}...^Cannot update!"
|
||||
break
|
||||
fi
|
||||
done
|
||||
message="USB mount"
|
||||
notif "${message}"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
|
||||
1)
|
||||
|
||||
# USB check
|
||||
mount | grep -q /dev/mmcblk0p3
|
||||
if [ $? -eq 0 ]; then
|
||||
notif "${message}..."
|
||||
umount /mnt >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
notif "${message}...^Cannot check USB!"
|
||||
fi
|
||||
fsck.fat -a -v -w /dev/mmcblk0p3
|
||||
if [ $? -ne 0 ]; then
|
||||
notif "${message}...^Cannot check USB!"
|
||||
fi
|
||||
mount /mnt
|
||||
if [ $? -ne 0 ]; then
|
||||
notif "${message}...^Cannot check USB!"
|
||||
else
|
||||
notif "${message} done"
|
||||
fi
|
||||
else
|
||||
notif "${message}...^Cannot check USB when mounted!"
|
||||
fi
|
||||
;;
|
||||
|
||||
2)
|
||||
|
||||
# USB format
|
||||
mount | grep -q /dev/mmcblk0p3
|
||||
if [ $? -eq 0 ]; then
|
||||
notif "${message}..."
|
||||
umount /mnt &&
|
||||
mkfs.vfat /dev/mmcblk0p3 &&
|
||||
mount /mnt
|
||||
if [ $? -ne 0 ]; then
|
||||
notif "${message}...^Cannot format USB!"
|
||||
else
|
||||
notif "${message} done"
|
||||
fi
|
||||
else
|
||||
notif "${message}...^Cannot format USB when mounted!"
|
||||
fi
|
||||
;;
|
||||
|
||||
3)
|
||||
|
||||
# Network enable/disable
|
||||
if [ -e /mnt/usbnet ]; then
|
||||
rm -f /mnt/usbnet
|
||||
message="Network enable"
|
||||
else
|
||||
touch /mnt/usbnet
|
||||
message="Network disable"
|
||||
fi
|
||||
notif "${message}"
|
||||
;;
|
||||
|
||||
4)
|
||||
|
||||
# QR code
|
||||
qrencode -o /tmp/qrcode.png "https://tinyurl.com/y63qlwzu/$(get_sid)"
|
||||
fbv -e /tmp/qrcode.png -d 1
|
||||
;;
|
||||
|
||||
5)
|
||||
|
||||
# Factory tests enable/disable
|
||||
if [ -e /mnt/.assembly_tests ]; then
|
||||
rm -f /mnt/.assembly_tests
|
||||
message="Factory tests enable"
|
||||
else
|
||||
touch /mnt/.assembly_tests
|
||||
message="Factory tests disable"
|
||||
fi
|
||||
notif "${message}"
|
||||
;;
|
||||
|
||||
6)
|
||||
notif "^^^^^^^^ RESTARTING...^^^^^^^^"
|
||||
normal_mode
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Display first menu entry
|
||||
entry=0
|
||||
menu_display ${entry}
|
||||
|
||||
# Recovery menu loop
|
||||
while true; do
|
||||
|
||||
# Get key events
|
||||
key=$(dd if=/dev/input/event0 bs=32 count=1 status=none | xxd -p -c 32 | cut -b 21-26)
|
||||
case ${key} in
|
||||
160001|160002)
|
||||
|
||||
# Key UP pressed or repeat
|
||||
let entry=${entry}-1
|
||||
let entry=${entry}%7
|
||||
menu_display ${entry}
|
||||
;;
|
||||
|
||||
200001|200002)
|
||||
|
||||
# Key DOWN pressed or repeat
|
||||
let entry=${entry}+1
|
||||
let entry=${entry}%7
|
||||
menu_display ${entry}
|
||||
;;
|
||||
|
||||
1e0001|1e0002)
|
||||
|
||||
# Key A pressed or repeat
|
||||
menu_run ${entry}
|
||||
;;
|
||||
esac
|
||||
done
|
||||
Loading…
x
Reference in New Issue
Block a user