working timeout
This commit is contained in:
1 parent
2d79ed5035
commit
dd0403c4f4
3 files changed
+32
-44
No files matched your search
@@ -47,7 +47,7 @@ define Device/generic-mf68e
|
||||
CMDLINE := "earlycon console=ttyMSM0,115200 quiet loglevel=0 vt.global_cursor_default=0 vt.cur_default=0 root=/dev/mmcblk0p14 rootfstype=squashfs rootwait"
|
||||
DEVICE_PACKAGES := configs-mf68e wpad-basic-wolfssl rmtfs uci-usb-gadget \
|
||||
block-mount f2fs-tools prepare-rootfs-data \
|
||||
msm-firmware-dumper power-button-daemon kmod-fbtft-gc9107
|
||||
msm-firmware-dumper power-button-daemon kmod-fbtft-gc9107 display-monitor
|
||||
endef
|
||||
TARGET_DEVICES += generic-mf68e
|
||||
|
||||
|
||||
@@ -10,7 +10,6 @@ define Package/display-monitor
|
||||
SECTION:=utils
|
||||
CATEGORY:=Utilities
|
||||
TITLE:=Display backlight monitor with timeout
|
||||
# DEPENDS:=+fbtft-gc9107
|
||||
PKGARCH:=all
|
||||
endef
|
||||
|
||||
|
||||
@@ -3,82 +3,71 @@
|
||||
BACKLIGHT="/sys/class/backlight/backlight"
|
||||
MAX_BRIGHTNESS=$(cat $BACKLIGHT/max_brightness 2>/dev/null || echo 1785)
|
||||
|
||||
# Configuración (en segundos)
|
||||
TIMEOUT_FULL=3 # 3s al 100%
|
||||
TIMEOUT_DIM=2 # 2s al 50% antes de apagar
|
||||
TIMEOUT_FULL=5
|
||||
TIMEOUT_DIM=3
|
||||
BRIGHTNESS_FULL=$MAX_BRIGHTNESS
|
||||
BRIGHTNESS_DIM=$((MAX_BRIGHTNESS / 2))
|
||||
BRIGHTNESS_DIM=$((MAX_BRIGHTNESS / 8))
|
||||
|
||||
# PIDs de timers activos
|
||||
DIM_TIMER_PID=""
|
||||
OFF_TIMER_PID=""
|
||||
|
||||
logger -t display "Display monitor started (max: $MAX_BRIGHTNESS)"
|
||||
logger -t display "Display monitor started (max: $MAX_BRIGHTNESS, dimmed: $BRIGHTNESS_DIM)"
|
||||
|
||||
# Control del backlight
|
||||
set_brightness() {
|
||||
local level=$1
|
||||
|
||||
if [ "$level" -eq 0 ]; then
|
||||
# Apagar
|
||||
echo 4 > $BACKLIGHT/bl_power 2>/dev/null
|
||||
else
|
||||
# Encender y establecer brillo
|
||||
echo "$level" > $BACKLIGHT/brightness 2>/dev/null
|
||||
echo 0 > $BACKLIGHT/bl_power 2>/dev/null
|
||||
echo $level > $BACKLIGHT/brightness
|
||||
}
|
||||
|
||||
cancel_timers() {
|
||||
if [ -n "$DIM_TIMER_PID" ]; then
|
||||
kill $DIM_TIMER_PID
|
||||
DIM_TIMER_PID=""
|
||||
fi
|
||||
if [ -n "$OFF_TIMER_PID" ]; then
|
||||
kill $OFF_TIMER_PID
|
||||
OFF_TIMER_PID=""
|
||||
fi
|
||||
}
|
||||
|
||||
# Cancelar timers activos
|
||||
cancel_timers() {
|
||||
[ -n "$DIM_TIMER_PID" ] && kill $DIM_TIMER_PID 2>/dev/null
|
||||
[ -n "$OFF_TIMER_PID" ] && kill $OFF_TIMER_PID 2>/dev/null
|
||||
DIM_TIMER_PID=""
|
||||
OFF_TIMER_PID=""
|
||||
}
|
||||
|
||||
# Iniciar secuencia de backlight
|
||||
start_backlight_sequence() {
|
||||
# Cancelar timers previos
|
||||
cancel_timers
|
||||
|
||||
# Encender al 100%
|
||||
logger -t display "Backlight: FULL (100%)"
|
||||
logger -t display "Backlight: FULL"
|
||||
set_brightness $BRIGHTNESS_FULL
|
||||
|
||||
TOTAL_TIMEOUT=$((TIMEOUT_FULL + TIMEOUT_DIM))
|
||||
|
||||
# Timer 1: DIM después de TIMEOUT_FULL segundos
|
||||
(
|
||||
sleep $TIMEOUT_FULL
|
||||
logger -t display "Backlight: DIM (50%)"
|
||||
logger -t display "Backlight: DIM"
|
||||
set_brightness $BRIGHTNESS_DIM
|
||||
) &
|
||||
DIM_TIMER_PID=$!
|
||||
|
||||
# Timer 2: OFF después de TIMEOUT_FULL + TIMEOUT_DIM segundos
|
||||
(
|
||||
sleep $((TIMEOUT_FULL + TIMEOUT_DIM))
|
||||
sleep $TOTAL_TIMEOUT
|
||||
logger -t display "Backlight: OFF"
|
||||
set_brightness 0
|
||||
set_brightness 1
|
||||
) &
|
||||
OFF_TIMER_PID=$!
|
||||
}
|
||||
|
||||
# Monitor de eventos del botón
|
||||
button_monitor() {
|
||||
PIPE="/tmp/backlight_button_events"
|
||||
[ ! -p "$PIPE" ] && mkfifo "$PIPE"
|
||||
DEVICE="/dev/input/event0"
|
||||
logger -t display "Monitoring power button on /dev/input/event0"
|
||||
|
||||
while true; do
|
||||
read event < "$PIPE" 2>/dev/null
|
||||
if [ "$event" = "press" ]; then
|
||||
logger -t display "Button pressed - wake display"
|
||||
evtest "$DEVICE" 2>/dev/null | while read -r line; do
|
||||
if echo "$line" | grep -q "code 116.*value 1"; then
|
||||
logger -t display "Button event detected"
|
||||
start_backlight_sequence
|
||||
|
||||
usleep 500000
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Inicializar: encender backlight al arrancar
|
||||
start_backlight_sequence
|
||||
|
||||
# Ejecutar monitor de botón
|
||||
trap 'cancel_timers; logger -t display "Display monitor stopped"; exit 0' INT TERM
|
||||
|
||||
start_backlight_sequence
|
||||
button_monitor
|
||||
Reference in new issue
Block a user