Add Fastboot/EDL reboot modes and SIM contact import/export
This commit is contained in:
@@ -210,6 +210,8 @@ getprogchoices() {
|
||||
$icon_lck Lock (Screen off)^0^sxmo_state.sh set screenoff
|
||||
$icon_out Logout^0^confirm Logout && sxmo_power.sh logout
|
||||
$icon_rld Reboot^0^confirm Reboot && sxmo_power.sh reboot
|
||||
$icon_rld Reboot to Fastboot^0^confirm Fastboot && sxmo_power.sh fastboot
|
||||
$icon_rld Reboot to EDL^0^confirm EDL && sxmo_power.sh edl
|
||||
$icon_pwr Poweroff^0^confirm Poweroff && sxmo_power.sh poweroff"
|
||||
;;
|
||||
modem)
|
||||
|
||||
@@ -8,7 +8,7 @@ export PATH="/sbin:/usr/sbin:$PATH"
|
||||
. sxmo_common.sh
|
||||
|
||||
usage() {
|
||||
printf "usage: %s [reboot|poweroff|logout|togglewm]\n" "$(basename "$0")"
|
||||
printf "usage: %s [reboot|fastboot|bootloader|edl|poweroff|logout|togglewm]\n" "$(basename "$0")"
|
||||
}
|
||||
|
||||
run_polkit_login1() {
|
||||
@@ -89,9 +89,29 @@ run_priv_power() {
|
||||
return 1
|
||||
}
|
||||
|
||||
set_kernel_reboot_mode() {
|
||||
rmode="$1"
|
||||
param_path="/sys/module/leds_msm8905_torch/parameters/next_reboot_mode"
|
||||
if [ -e "$param_path" ]; then
|
||||
printf "%s\n" "$rmode" | /usr/bin/doas tee "$param_path" >/dev/null 2>&1 || \
|
||||
printf "%s\n" "$rmode" > "$param_path" 2>/dev/null || true
|
||||
fi
|
||||
}
|
||||
|
||||
force_reboot_cmd() {
|
||||
rmode="$1"
|
||||
/usr/bin/doas python3 -c "
|
||||
import ctypes, os
|
||||
os.sync()
|
||||
libc = ctypes.CDLL(None)
|
||||
libc.syscall(88, 0xfee1dead, 672274793, 0xa1b2c3d4, b'$rmode')
|
||||
" >/dev/null 2>&1 || /usr/bin/doas /sbin/reboot -f >/dev/null 2>&1 || true
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
reboot)
|
||||
sync
|
||||
set_kernel_reboot_mode ""
|
||||
sxmo_hook_power.sh reboot || true
|
||||
(sleep 4; [ -u /usr/bin/doas ] && /usr/bin/doas /sbin/reboot -f >/dev/null 2>&1 || [ -u /usr/bin/sudo ] && /usr/bin/sudo -n /sbin/reboot -f >/dev/null 2>&1) &
|
||||
if ! run_priv_power reboot; then
|
||||
@@ -102,6 +122,26 @@ case "$1" in
|
||||
fi
|
||||
sxmo_jobs.sh stop all >/dev/null 2>&1 || true
|
||||
;;
|
||||
fastboot|bootloader)
|
||||
sync
|
||||
set_kernel_reboot_mode "bootloader"
|
||||
sxmo_hook_power.sh reboot || true
|
||||
(sleep 4; force_reboot_cmd "bootloader") &
|
||||
if ! run_priv_power reboot; then
|
||||
force_reboot_cmd "bootloader"
|
||||
fi
|
||||
sxmo_jobs.sh stop all >/dev/null 2>&1 || true
|
||||
;;
|
||||
edl)
|
||||
sync
|
||||
set_kernel_reboot_mode "edl"
|
||||
sxmo_hook_power.sh reboot || true
|
||||
(sleep 4; force_reboot_cmd "edl") &
|
||||
if ! run_priv_power reboot; then
|
||||
force_reboot_cmd "edl"
|
||||
fi
|
||||
sxmo_jobs.sh stop all >/dev/null 2>&1 || true
|
||||
;;
|
||||
poweroff)
|
||||
sync
|
||||
sxmo_hook_power.sh poweroff || true
|
||||
|
||||
Reference in New Issue
Block a user