You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

94 lines
1.9 KiB

#!/bin/sh
lcd4linux=$(which lcd4linux || type -p lcd4linux)
[ -n $lcd4linux ] || exit 1
. /etc/init.d/functions
. /etc/init.d/globals
lcd4linux_conf() {
if [ ! -e /tmp/lcd/layout ]; then
mkdir -p /tmp/lcd
echo Pearl_standard > /tmp/lcd/layout
fi
read layout < /tmp/lcd/layout
test ${layout##*_} = user && CONF_DIR=/var/etc || CONF_DIR=/etc
chmod 600 ${CONF_DIR}/lcd4linux.conf
chown 0:0 ${CONF_DIR}/lcd4linux.conf
printf "${CONF_DIR}/lcd4linux.conf"
}
lcd4linux_pid=/var/run/lcd4linux.pid
lcd4image_conf=/tmp/lcd4image.conf
lcd4image_pid=/var/run/lcd4image.pid
lcd4linux_png=/tmp/lcd4linux.png
doStart() {
( # do always run in background
# /tmp/.lcd4linux gets created by neutrino when lcd4l-Thread is ready
while [ ! -e /tmp/.lcd4linux ]; do
sleep 1;
done
lcd4linux_conf=$(lcd4linux_conf)
# /tmp/.lcd-* gets created by extdisplay script when a display was found
if [ -e /tmp/.lcd-* ]; then
$lcd4linux -f $lcd4linux_conf -p $lcd4linux_pid
fi
if [ "$(get_setting lcd4l_screenshots)" == "1" ]; then
cp $lcd4linux_conf $lcd4image_conf
sed -i "s|^ driver.*| driver 'Image'\n format 'PNG'\n pixel '1+0'\n gap '0x0'|g" $lcd4image_conf
$lcd4linux -f $lcd4image_conf -p $lcd4image_pid -o $lcd4linux_png
fi
) &
}
doStop() {
for PIDFILE in $lcd4image_pid $lcd4linux_pid; do
if [ -e $PIDFILE ]; then
# read pid from pidfile
read PID < $PIDFILE
# kill child processes
CHILDS=$(ps -o pid --ppid $PID --no-heading)
for CHILD in $CHILDS; do
kill -KILL $CHILD
done
# terminate main process
kill -TERM $PID
sleep 2
fi
done
rm -f $lcd4image_conf $lcd4linux_png
}
doOff() {
echo "LCD::backlight(0)" | $lcd4linux -i > /dev/null 2>&1
}
case "$1" in
start)
doStart
;;
stop)
doStop
;;
off)
doStop
doOff
;;
restart|reload)
doStop
doStart
;;
*)
echo "[${BASENAME}] Usage: $0 {start|stop|off|restart|reload}"
;;
esac