diff options
Diffstat (limited to 'net-wireless/irda-utils/files/irda.initd')
-rw-r--r-- | net-wireless/irda-utils/files/irda.initd | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/net-wireless/irda-utils/files/irda.initd b/net-wireless/irda-utils/files/irda.initd new file mode 100644 index 000000000000..c515d12356e7 --- /dev/null +++ b/net-wireless/irda-utils/files/irda.initd @@ -0,0 +1,86 @@ +#!/sbin/runscript +# Copyright 1999-2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License, v2 +# $Id$ + +# Hint: We don't use start-stop-daemon, because pidfile is the same +# for every irattach instance. So it isn't reliable if we have more +# than one IrDA device (i.e. with IrDA-USB). + +depend() { + use serial +} + +checkconfig() { + if [ -z "${DEVICE}" ]; then + DEVICE="/dev/ttyS1" + fi + + if [ -z "${DONGLE}" -o "${DONGLE}" = "none" ]; then + DONGLE="" + else + DONGLE="-d ${DONGLE}" + fi + + if [ "${DISCOVERY}" = "yes" ]; then + DISCOVERY="-s" + else + DISCOVERY="" + fi + + NET_IRDA_OPTS="" + + # Set maximum baud rate for IrDA + if [ -n "${MAX_BAUD_RATE}" ]; then + NET_IRDA_OPTS="${NET_IRDA_OPTS} net.irda.max_baud_rate=${MAX_BAUD_RATE}" + fi + + # Disable discovery (enabling is done automatically by irattach) + if [ -z "${DISCOVERY}" ]; then + NET_IRDA_OPTS="${NET_IRDA_OPTS} net.irda.discovery=0" + fi + + # Ensure that SIR driver is loaded (needed for pmac_zilog) + case "${DEVICE}" in + /dev/ttyS*) LOAD_MODULES="${LOAD_MODULES} irtty-sir";; + esac +} + +remove_module() { + local CNT=0 + while ! /sbin/modprobe -sqr ${1}; do + [ $((CNT++)) -eq 10 ] && break + sleep 0.25 + done +} + +start() { + checkconfig + ebegin "Starting IrDA" + + # Needed for some machines in FIR-mode + [ -n "${SETSERIAL}" ] && /bin/setserial ${SETSERIAL} uart none port 0x0 irq 0 + + # Load IrDA modules + /sbin/modprobe -sqa ircomm-tty ${LOAD_MODULES} + + # Set IrDA options + [ -n "${NET_IRDA_OPTS}" ] && /sbin/sysctl -e -q -w ${NET_IRDA_OPTS} + + # Finally, attach IrDA device + /usr/sbin/irattach ${DEVICE} ${DONGLE} ${DISCOVERY} + eend ${?} +} + +stop() { + ebegin "Shutting down IrDA" + /usr/bin/pkill -f "^/usr/sbin/irattach ${DEVICE} ?" + eend ${?} + + # Try to remove IrDA driver + case "${DEVICE}" in + /dev/ttyS*) remove_module irtty-sir;; + irda[0-9]*) remove_module ${DEVICE};; + esac + return 0 # never fail +} |