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
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
|
|
|