| #!/sbin/runscript |
| # Copyright 1999-2008 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License, v2 |
| # $Header: /var/cvsroot/gentoo-x86/net-wireless/irda-utils/files/irda.initd,v 1.2 2008/03/23 16:00:16 sbriesen Exp $ |
| |
| # 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 |
| } |