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.
91 lines
2.6 KiB
91 lines
2.6 KiB
#!/bin/sh
|
|
|
|
. /etc/init.d/globals
|
|
|
|
LSUSB=$(lsusb)
|
|
|
|
# supported dpf-devices
|
|
DPF="1908:0102"
|
|
DPFbootloader="1908:3318"
|
|
#
|
|
DPF="${DPF} ${DPFbootloader}"
|
|
|
|
# supported spf-devices
|
|
SPFstorage="04E8:200A 04E8:200E 04E8:200C 04E8:2012 04E8:2016 04E8:2025 04E8:2033 04E8:201C 04E8:2027 04E8:2035 04E8:204F 04E8:2039"
|
|
SPFmonitor="04E8:200B 04E8:200F 04E8:200D 04E8:2013 04E8:2017 04E8:2026 04E8:2034 04E8:201B 04E8:2028 04E8:2036 04E8:2050 04E8:2040"
|
|
# SPFmodel: ^SPF-72H ^SPF-75H ^SPF-83H ^SPF-85H ^SPF-85P ^SPF-87H ^SPF-87H ^SPF-105P ^SPF-107H ^SPF-107H ^SPF-700T ^SPF-1000P
|
|
# SPFmodel: ^SPF-76H ^SPF-86H ^SPF-86P old new
|
|
SPF="${SPFstorage} ${SPFmonitor}"
|
|
|
|
DEVICES="${DPF} ${SPF}"
|
|
for DEVICE in ${DEVICES}; do
|
|
V=$(echo ${DEVICE:0:4} | sed 's/^[0]*//' | tr [:upper:] [:lower:]) # lower case vendor w/o leading zeros
|
|
P=$(echo ${DEVICE:5:4} | sed 's/^[0]*//' | tr [:upper:] [:lower:]) # lower case product w/o leading zeros
|
|
|
|
flagLCD=/tmp/.lcd-${V}
|
|
|
|
case "$1" in
|
|
start|add)
|
|
# LOGINFO "trying to process ${DEVICE} (V:{$V} P:{$P})"
|
|
|
|
echo "${LSUSB}" | grep -q -i "${DEVICE}" || continue
|
|
|
|
if $(echo "${LSUSB}" | grep -q "${DPFbootloader}"); then
|
|
LOGINFO "unsupported device (ID ${DEVICE}) found"
|
|
LOGINFO "${DEVICE} is in bootloader mode"
|
|
break
|
|
fi
|
|
|
|
LOGINFO "supported device (ID ${DEVICE}) found"
|
|
|
|
if $(echo "${DPF} ${SPF}" | grep -q "${DEVICE}"); then
|
|
LOGINFO "creating flagfile '$flagLCD'"
|
|
echo "${DEVICE}" > $flagLCD
|
|
|
|
if $(echo "${DPF} ${SPFstorage}" | grep -q "${DEVICE}"); then
|
|
LOGINFO "DPF or SPF in storage mode found"
|
|
LOGINFO "(re)starting lcd4linux"
|
|
|
|
service lcd4linux restart
|
|
fi
|
|
|
|
if $(echo "${SPFmonitor}" | grep -q "${DEVICE}"); then
|
|
LOGINFO "SPF in monitor mode found"
|
|
if [ -e /var/run/lcd4linux.pid ]; then
|
|
LOGINFO "do nothing"
|
|
else
|
|
LOGINFO "(re)starting lcd4linux"
|
|
service lcd4linux restart
|
|
fi
|
|
fi
|
|
break
|
|
fi
|
|
;;
|
|
stop|remove)
|
|
if [ -e $flagLCD ]; then
|
|
grep "^${DEVICE}" $flagLCD >/dev/null || continue
|
|
|
|
LOGINFO "supported DPF/SPF (ID ${DEVICE}) removed"
|
|
|
|
if $(echo "${DPF} ${SPFmonitor}" | grep -q "${DEVICE}"); then
|
|
LOGINFO "DPF or SPF in monitor mode removed"
|
|
LOGINFO "stopping lcd4linux"
|
|
|
|
service lcd4linux stop
|
|
fi
|
|
|
|
if $(echo "${SPFstorage}" | grep -q "${DEVICE}"); then
|
|
LOGINFO "SPF in storage mode removed"
|
|
LOGINFO "do nothing"
|
|
fi
|
|
|
|
LOGINFO "removing flagfile '$flagLCD'"
|
|
rm -f $flagLCD
|
|
break
|
|
fi
|
|
;;
|
|
*)
|
|
echo "[${BASENAME}] Usage: $0 {start|stop}"
|
|
;;
|
|
esac
|
|
done
|
|
|