summaryrefslogtreecommitdiff
blob: d0250eab891fb6a30bebbec81f7104ebd149a437 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/bin/sh
#
# irda-usb
#
# Hotplug IrDA-USB devices. Only USB devices are handled!
# To initialize normal SIR/FIR dongles, please use /etc/init.d/irda

SYSFS="/sys"

checkusb() {
	# quick check, but not always available
	[ "${PHYSDEVBUS}" = "usb" ] && return 0

	# alternative check via modalias
	/bin/grep -q '^usb:' "${SYSFS}${DEVPATH}/device/modalias" 2>/dev/null
}

checkconfig() {
	. /etc/conf.d/irda

	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
}

case "${ACTION}" in
	add)
		# We handle USB only
		checkusb || exit 0

		# Load config
		checkconfig

		# 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 ${INTERFACE} ${DISCOVERY}
		;;

	remove)
		# Unconditionally kill irattach instance
		/usr/bin/pkill -f "^/usr/sbin/irattach ${INTERFACE} ?"
		;;
esac