summaryrefslogtreecommitdiff
path: root/utilities/lirc/lirc_init
blob: 05afcb062edd86fc714ad23ced7a47813eda7d38 (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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#! /bin/sh
#
# This is an init script for Debian.
# Copy it to /etc/init.d/lirc and type
# > update-rc.d lirc defaults 20
#

# default configuration
DEVICE="/dev/lirc0"
DRIVER="default"
LOAD_MODULES=true
MODULES="lirc_dev lirc_serial"

LIRCD="/usr/sbin/lircd"
LIRCD_ARGS="--permission=666"
#LIRCD_CONF="/etc/lirc/lircd.conf"

LIRCMD="/usr/sbin/lircd"
#LIRCMD_CONF="/etc/lirc/lircmd.conf"

START_LIRCD=true
START_LIRCMD=true

# load configuration if any
if [ -f /etc/default/lirc ] ; then
       . /etc/default/lirc
fi

[ ! -n "$LIRCD_CONF" ] && LIRCD_CONF="/etc/lirc/lircd.conf"
[ ! -n "$LIRCMD_CONF" ] && LIRCMD_CONF="/etc/lirc/lircmd.conf"

# functions
load_modules ()
{
        local MODULES_MISSING=false

        for mod in $*
        do
                modprobe -k $mod 2> /dev/null || MODULES_MISSING=true
        done

        if $MODULES_MISSING; then
                echo "#####################################################"
                echo "## I couldn't load the required kernel modules     ##"
                echo "## You should install lirc-modules-source to build ##"
                echo "## kernel support for your hardware.               ##"
                echo "#####################################################"
                echo "## If this message is not appropriate you may set  ##"
                echo "## LOAD_MODULES=false in /etc/default/lirc         ##"
                echo "#####################################################"
                START_LIRCMD=false
                START_LIRCD=false
        fi
}

build_args ()
{
        local ARGS="$*"
        if [ -n "$DEVICE" ] && [ "$DEVICE" != "none" ]; then
                if [ -d /dev/lirc ] && [ "$DEVICE" = "/dev/lirc" ];then
                        #new device names
                        DEVICE="/dev/lirc/0"
                fi
                ARGS="--device=$DEVICE $ARGS"
        fi
        if [ -n "$DRIVER" ] && [ "$DRIVER" != "none" ]; then
                ARGS="--driver=$DRIVER $ARGS"
        fi
        echo $ARGS
}

# test 
test -f $LIRCD  || exit 0
test -f $LIRCMD || exit 0

if [ ! -f $LIRCD_CONF ] || grep -q "^#UNCONFIGURED"  $LIRCD_CONF ; then
        if [ "$1" = "start" ] ; then
          echo "##################################################"
          echo "## LIRC IS NOT CONFIGURED                       ##"
          echo "##                                              ##"
          echo "## read /usr/share/doc/lirc/html/configure.html ##"
          echo "##################################################"
        fi
        START_LIRCD=false
        START_LIRCMD=false
fi
if [ ! -f $LIRCMD_CONF ] || grep -q "^#UNCONFIGURED" $LIRCMD_CONF ; then
       START_LIRCMD=false
fi

# run
case "$1" in
  start)
    if $LOAD_MODULES && $START_LIRCD ; then
        load_modules $MODULES
    fi
    if $START_LIRCD ; then
        echo -n "Starting lirc daemon: lircd"
        LIRCD_ARGS=`build_args $LIRCD_ARGS`
        start-stop-daemon --start --quiet --exec $LIRCD -- $LIRCD_ARGS $LIRCD_CONF < /dev/null
    fi
    if $START_LIRCMD ; then
        echo -n " lircmd"
        start-stop-daemon --start --quiet --exec $LIRCMD -- $LIRCMD_CONF < /dev/null
    fi
    echo "."
    ;;
  stop)
    echo -n "Stopping lirc daemon: lircmd"
    start-stop-daemon --stop --quiet --exec $LIRCMD
    echo -n " lircd"
    start-stop-daemon --stop --quiet --exec $LIRCD
    echo "."
    ;;
  reload|force-reload)
    start-stop-daemon --stop --quiet --signal 1 --exec $LIRCD
    start-stop-daemon --stop --quiet --signal 1 --exec $LIRCMD
    ;;
  restart)
    $0 stop
    sleep 1
    $0 start
    ;;
  *)
    echo "Usage: /etc/init.d/lircd {start|stop|reload|restart|force-reload}"
    exit 1
    ;;
esac

exit 0