Mi objetivo es escribir un script de shell para apagar y encender periódicamente la linterna de mi teléfono (aproximadamente 1 kHz o 500 Hz). Mi teléfono está rooteado. Así que obtuve acceso de shell de superusuario (#)
Estos son los archivos en mi sys/class/leds/flashlight
whyred:/sys/class/leds/flashlight # ls
brightness device max_brightness power subsystem trigger uevent
(Captura de pantalla original de la terminal)
Pude modificar el contenido del archivo brightness
y pude encender y apagar manualmente mi linterna. Sin embargo, quiero hacerlo periódicamente con un retraso y para eso, necesito un disparador de temporizador. Pero dentro del archivo trigger
de arriba, no hay ninguna sección de retraso indicada. Solo había algunos contenidos dentro del archivo (sin números)
whyred:/sys/class/leds/flashlight # cat trigger
[none] bkl-trigger switch0_trigger flash0_trigger flash1_trigger torch0_trigger torch1_trigger switch1_trigger flash2_trigger torch2_trigger dc-online usb-online main-online pc_port-online battery-charging-or-full battery-charging battery-full battery-charging-blink-full-solid rfkill0 mmc0 mmc1 bms-online parallel-online rfkill1
(Captura de pantalla original de la terminal)
Pude ajustar un periodo de aproximadamente 1-3 ms escribiendo un script bash, que hace eco de brillo 100 seguido de sleep y luego hace eco de 0 de brillo
Script:
while [ 1 le 100]
do
echo "100" > ~/sys/class/leds/brightness
sleep(0.001)
echo "100" > ~/sys/class/leds/brightness)
sleep(0.001)
done # end
Pero quiero al menos una frecuencia de 1 kHz, por lo que un temporizador es lo correcto, la función sleep no es aconsejable.
¿Cómo puedo lograr mi objetivo?
0 votos
No creo que encuentres un disparador con una frecuencia tan alta. En su lugar, escribiría un pequeño programa en C que intente habilitar/deshabilitar la linterna. Para el tiempo, utiliza la espera ocupada y como fuente de tiempo puede ser clock_gettime(CLOCK_MONOTONIC,..).
0 votos
Hola , he echado un vistazo a tu enlace, pero perdón por ser principiante, me resulta difícil entenderlo, ¿puedes publicar algún otro enlace o un código C que haga lo mismo en el kernel de Linux?
1 votos
Lo siento Edmund, pero este sitio aquí es para usuarios finales, no para programadores/desarrolladores. Pero otro consejo sería buscar aplicaciones de automatización como tasker, que también debería ser capaz de activar la linterna.
0 votos
Pregunta de seguimiento propia de OP: ¿Cómo usar el temporizador del sistema para ejecutar una tarea periódicamente en un Redmi Note 5 Pro rooteado con Busybox instalado?