script/init.d/ethercat.in
author Dominik Staubli <ch1010252@ch10pc423>
Thu, 21 Jan 2010 11:09:31 +0100
changeset 1798 e7733f825982
parent 1556 52ec7297637c
child 1790 c4e3ee5632b2
permissions -rwxr-xr-x
Domain datagram working counter calculation bugfix: increment expected wc for a given slave & direction just once for each datagram
This bug occurs if you configure more than one SM in the same direction on the same slave
563
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     1
#!/bin/sh
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     2
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     3
#------------------------------------------------------------------------------
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     4
#
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     5
#  Init script for EtherCAT
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     6
#
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     7
#  $Id$
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     8
#
1326
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1323
diff changeset
     9
#  Copyright (C) 2006-2008  Florian Pose, Ingenieurgemeinschaft IgH
563
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    10
#
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    11
#  This file is part of the IgH EtherCAT Master.
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    12
#
1326
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1323
diff changeset
    13
#  The IgH EtherCAT Master is free software; you can redistribute it and/or
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1323
diff changeset
    14
#  modify it under the terms of the GNU General Public License version 2, as
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1323
diff changeset
    15
#  published by the Free Software Foundation.
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1323
diff changeset
    16
#
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1323
diff changeset
    17
#  The IgH EtherCAT Master is distributed in the hope that it will be useful,
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1323
diff changeset
    18
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1323
diff changeset
    19
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1323
diff changeset
    20
#  Public License for more details.
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1323
diff changeset
    21
#
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1323
diff changeset
    22
#  You should have received a copy of the GNU General Public License along
ef907b0b5125 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents: 1323
diff changeset
    23
#  with the IgH EtherCAT Master; if not, write to the Free Software
563
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    24
#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    25
#
1363
11c0b2caa253 Improved and added license headers.
Florian Pose <fp@igh-essen.com>
parents: 1326
diff changeset
    26
#  ---
11c0b2caa253 Improved and added license headers.
Florian Pose <fp@igh-essen.com>
parents: 1326
diff changeset
    27
#  
11c0b2caa253 Improved and added license headers.
Florian Pose <fp@igh-essen.com>
parents: 1326
diff changeset
    28
#  The license mentioned above concerns the source code only. Using the EtherCAT
11c0b2caa253 Improved and added license headers.
Florian Pose <fp@igh-essen.com>
parents: 1326
diff changeset
    29
#  technology and brand is only permitted in compliance with the industrial
11c0b2caa253 Improved and added license headers.
Florian Pose <fp@igh-essen.com>
parents: 1326
diff changeset
    30
#  property and similar rights of Beckhoff Automation GmbH.
563
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    31
#
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    32
#------------------------------------------------------------------------------
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    33
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    34
### BEGIN INIT INFO
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    35
# Provides:          ethercat
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    36
# Required-Start:    $local_fs $syslog $network
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    37
# Should-Start:      $time ntp
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    38
# Required-Stop:     $local_fs $syslog $network
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    39
# Should-Stop:       $time ntp
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    40
# Default-Start:     3 5
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    41
# Default-Stop:      0 1 2 6
1185
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
    42
# Short-Description: EtherCAT master
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
    43
# Description:       EtherCAT master @VERSION@
563
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    44
### END INIT INFO
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    45
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    46
#------------------------------------------------------------------------------
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    47
698
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    48
MODPROBE=/sbin/modprobe
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    49
RMMOD=/sbin/rmmod
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    50
MODINFO=/sbin/modinfo
1185
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
    51
ETHERCAT=@prefix@/bin/ethercat
563
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    52
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    53
#------------------------------------------------------------------------------
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    54
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    55
ETHERCAT_CONFIG=/etc/sysconfig/ethercat
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    56
573
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
    57
if [ ! -r ${ETHERCAT_CONFIG} ]; then
588
ba69f7f34fbf Introduced DEVICE_MODULES variable in sysconfig file; enabled init
Florian Pose <fp@igh-essen.com>
parents: 573
diff changeset
    58
    echo ${ETHERCAT_CONFIG} not existing;
573
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
    59
    if [ "${1}" = "stop" ]; then
563
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    60
	exit 0
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    61
    else
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    62
	exit 6
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    63
    fi
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    64
fi
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    65
573
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
    66
. ${ETHERCAT_CONFIG}
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
    67
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
    68
#------------------------------------------------------------------------------
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
    69
1323
10fbef0a3ac5 merge -r1599:1600 branches/stable-1.4: Removed bashisms from init script.
Florian Pose <fp@igh-essen.com>
parents: 1190
diff changeset
    70
exit_success() {
698
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    71
    if [ -r /etc/rc.status ]; then
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    72
        rc_reset
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    73
        rc_status -v
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    74
        rc_exit
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    75
    else
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    76
        echo " done"
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    77
        exit 0
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    78
    fi
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    79
}
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    80
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    81
#------------------------------------------------------------------------------
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    82
1323
10fbef0a3ac5 merge -r1599:1600 branches/stable-1.4: Removed bashisms from init script.
Florian Pose <fp@igh-essen.com>
parents: 1190
diff changeset
    83
exit_fail() {
698
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    84
    if [ -r /etc/rc.status ]; then
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    85
        rc_failed
702
bc985819713a Fixed init script.
Florian Pose <fp@igh-essen.com>
parents: 698
diff changeset
    86
        rc_status -v
698
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    87
        rc_exit
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    88
    else
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    89
        echo " failed"
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    90
        exit 1
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    91
    fi
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    92
}
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    93
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    94
#------------------------------------------------------------------------------
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
    95
1323
10fbef0a3ac5 merge -r1599:1600 branches/stable-1.4: Removed bashisms from init script.
Florian Pose <fp@igh-essen.com>
parents: 1190
diff changeset
    96
print_running() {
1185
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
    97
    if [ -r /etc/rc.status ]; then
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
    98
        rc_reset
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
    99
        rc_status -v
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   100
    else
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   101
        echo " running"
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   102
    fi
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   103
}
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   104
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   105
#------------------------------------------------------------------------------
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   106
1323
10fbef0a3ac5 merge -r1599:1600 branches/stable-1.4: Removed bashisms from init script.
Florian Pose <fp@igh-essen.com>
parents: 1190
diff changeset
   107
print_dead() {
702
bc985819713a Fixed init script.
Florian Pose <fp@igh-essen.com>
parents: 698
diff changeset
   108
    if [ -r /etc/rc.status ]; then
bc985819713a Fixed init script.
Florian Pose <fp@igh-essen.com>
parents: 698
diff changeset
   109
        rc_failed
bc985819713a Fixed init script.
Florian Pose <fp@igh-essen.com>
parents: 698
diff changeset
   110
        rc_status -v
bc985819713a Fixed init script.
Florian Pose <fp@igh-essen.com>
parents: 698
diff changeset
   111
    else
bc985819713a Fixed init script.
Florian Pose <fp@igh-essen.com>
parents: 698
diff changeset
   112
        echo " dead"
bc985819713a Fixed init script.
Florian Pose <fp@igh-essen.com>
parents: 698
diff changeset
   113
    fi
bc985819713a Fixed init script.
Florian Pose <fp@igh-essen.com>
parents: 698
diff changeset
   114
}
bc985819713a Fixed init script.
Florian Pose <fp@igh-essen.com>
parents: 698
diff changeset
   115
bc985819713a Fixed init script.
Florian Pose <fp@igh-essen.com>
parents: 698
diff changeset
   116
#------------------------------------------------------------------------------
bc985819713a Fixed init script.
Florian Pose <fp@igh-essen.com>
parents: 698
diff changeset
   117
1323
10fbef0a3ac5 merge -r1599:1600 branches/stable-1.4: Removed bashisms from init script.
Florian Pose <fp@igh-essen.com>
parents: 1190
diff changeset
   118
parse_mac_address() {
573
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   119
    if [ -z "${1}" ]; then
639
aa23c48dca2d Allow only MAC addresses as device identifiers; replaced master list by
Florian Pose <fp@igh-essen.com>
parents: 588
diff changeset
   120
        MAC=""
573
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   121
    elif echo ${1} | grep -qE '^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$'; then
639
aa23c48dca2d Allow only MAC addresses as device identifiers; replaced master list by
Florian Pose <fp@igh-essen.com>
parents: 588
diff changeset
   122
        MAC=${1}
573
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   123
    else
639
aa23c48dca2d Allow only MAC addresses as device identifiers; replaced master list by
Florian Pose <fp@igh-essen.com>
parents: 588
diff changeset
   124
        echo Invalid MAC address \"${1}\" in ${ETHERCAT_CONFIG}
698
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   125
        exit_fail
573
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   126
    fi 
563
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   127
}
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   128
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   129
#------------------------------------------------------------------------------
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   130
698
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   131
if [ -r /etc/rc.status ]; then
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   132
    . /etc/rc.status
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   133
    rc_reset
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   134
fi
563
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   135
573
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   136
case "${1}" in
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   137
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   138
start)
1190
5f2e38dddd4e Added spaces to init script.
Florian Pose <fp@igh-essen.com>
parents: 1185
diff changeset
   139
    echo -n "Starting EtherCAT master @VERSION@ "
573
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   140
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   141
    # construct DEVICES and BACKUPS from configuration variables
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   142
    DEVICES=""
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   143
    BACKUPS=""
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   144
    MASTER_INDEX=0
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   145
    while true; do
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   146
        DEVICE=$(eval echo "\${MASTER${MASTER_INDEX}_DEVICE}")
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   147
        BACKUP=$(eval echo "\${MASTER${MASTER_INDEX}_BACKUP}")
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   148
        if [ -z "${DEVICE}" ]; then break; fi
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   149
639
aa23c48dca2d Allow only MAC addresses as device identifiers; replaced master list by
Florian Pose <fp@igh-essen.com>
parents: 588
diff changeset
   150
        if [ ${MASTER_INDEX} -gt 0 ]; then
aa23c48dca2d Allow only MAC addresses as device identifiers; replaced master list by
Florian Pose <fp@igh-essen.com>
parents: 588
diff changeset
   151
            DEVICES=${DEVICES},
aa23c48dca2d Allow only MAC addresses as device identifiers; replaced master list by
Florian Pose <fp@igh-essen.com>
parents: 588
diff changeset
   152
            BACKUPS=${BACKUPS},
aa23c48dca2d Allow only MAC addresses as device identifiers; replaced master list by
Florian Pose <fp@igh-essen.com>
parents: 588
diff changeset
   153
        fi
aa23c48dca2d Allow only MAC addresses as device identifiers; replaced master list by
Florian Pose <fp@igh-essen.com>
parents: 588
diff changeset
   154
aa23c48dca2d Allow only MAC addresses as device identifiers; replaced master list by
Florian Pose <fp@igh-essen.com>
parents: 588
diff changeset
   155
        parse_mac_address ${DEVICE}
aa23c48dca2d Allow only MAC addresses as device identifiers; replaced master list by
Florian Pose <fp@igh-essen.com>
parents: 588
diff changeset
   156
        DEVICES=${DEVICES}${MAC}
aa23c48dca2d Allow only MAC addresses as device identifiers; replaced master list by
Florian Pose <fp@igh-essen.com>
parents: 588
diff changeset
   157
        
aa23c48dca2d Allow only MAC addresses as device identifiers; replaced master list by
Florian Pose <fp@igh-essen.com>
parents: 588
diff changeset
   158
        parse_mac_address ${BACKUP}
aa23c48dca2d Allow only MAC addresses as device identifiers; replaced master list by
Florian Pose <fp@igh-essen.com>
parents: 588
diff changeset
   159
        BACKUPS=${BACKUPS}${MAC}
573
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   160
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   161
        MASTER_INDEX=$(expr ${MASTER_INDEX} + 1)
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   162
    done
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   163
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   164
    # load master module
812
80c3d9c8292f Added MODPROBE_FLAGS variable.
Florian Pose <fp@igh-essen.com>
parents: 806
diff changeset
   165
    if ! ${MODPROBE} ${MODPROBE_FLAGS} ec_master \
80c3d9c8292f Added MODPROBE_FLAGS variable.
Florian Pose <fp@igh-essen.com>
parents: 806
diff changeset
   166
            main_devices=${DEVICES} backup_devices=${BACKUPS}; then
698
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   167
        exit_fail
573
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   168
    fi
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   169
588
ba69f7f34fbf Introduced DEVICE_MODULES variable in sysconfig file; enabled init
Florian Pose <fp@igh-essen.com>
parents: 573
diff changeset
   170
    # check for modules to replace
ba69f7f34fbf Introduced DEVICE_MODULES variable in sysconfig file; enabled init
Florian Pose <fp@igh-essen.com>
parents: 573
diff changeset
   171
    for MODULE in ${DEVICE_MODULES}; do
ba69f7f34fbf Introduced DEVICE_MODULES variable in sysconfig file; enabled init
Florian Pose <fp@igh-essen.com>
parents: 573
diff changeset
   172
        ECMODULE=ec_${MODULE}
698
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   173
        if ! ${MODINFO} ${ECMODULE} > /dev/null; then
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   174
            continue # ec_* module not found
588
ba69f7f34fbf Introduced DEVICE_MODULES variable in sysconfig file; enabled init
Florian Pose <fp@igh-essen.com>
parents: 573
diff changeset
   175
        fi
1556
52ec7297637c Init script and sysconfig file for generic Ethernet driver.
Florian Pose <fp@igh-essen.com>
parents: 1363
diff changeset
   176
        if [ ${MODULE} != "generic" ]; then
52ec7297637c Init script and sysconfig file for generic Ethernet driver.
Florian Pose <fp@igh-essen.com>
parents: 1363
diff changeset
   177
            if lsmod | grep "^${MODULE} " > /dev/null; then
52ec7297637c Init script and sysconfig file for generic Ethernet driver.
Florian Pose <fp@igh-essen.com>
parents: 1363
diff changeset
   178
                if ! ${RMMOD} ${MODULE}; then
52ec7297637c Init script and sysconfig file for generic Ethernet driver.
Florian Pose <fp@igh-essen.com>
parents: 1363
diff changeset
   179
                    exit_fail
52ec7297637c Init script and sysconfig file for generic Ethernet driver.
Florian Pose <fp@igh-essen.com>
parents: 1363
diff changeset
   180
                fi
588
ba69f7f34fbf Introduced DEVICE_MODULES variable in sysconfig file; enabled init
Florian Pose <fp@igh-essen.com>
parents: 573
diff changeset
   181
            fi
ba69f7f34fbf Introduced DEVICE_MODULES variable in sysconfig file; enabled init
Florian Pose <fp@igh-essen.com>
parents: 573
diff changeset
   182
        fi
812
80c3d9c8292f Added MODPROBE_FLAGS variable.
Florian Pose <fp@igh-essen.com>
parents: 806
diff changeset
   183
        if ! ${MODPROBE} ${MODPROBE_FLAGS} ${ECMODULE}; then
1556
52ec7297637c Init script and sysconfig file for generic Ethernet driver.
Florian Pose <fp@igh-essen.com>
parents: 1363
diff changeset
   184
            if [ ${MODULE} != "generic" ]; then
52ec7297637c Init script and sysconfig file for generic Ethernet driver.
Florian Pose <fp@igh-essen.com>
parents: 1363
diff changeset
   185
                ${MODPROBE} ${MODPROBE_FLAGS} ${MODULE} # try to restore
52ec7297637c Init script and sysconfig file for generic Ethernet driver.
Florian Pose <fp@igh-essen.com>
parents: 1363
diff changeset
   186
            fi
698
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   187
            exit_fail
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   188
        fi
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   189
    done
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   190
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   191
    exit_success
588
ba69f7f34fbf Introduced DEVICE_MODULES variable in sysconfig file; enabled init
Florian Pose <fp@igh-essen.com>
parents: 573
diff changeset
   192
    ;;
ba69f7f34fbf Introduced DEVICE_MODULES variable in sysconfig file; enabled init
Florian Pose <fp@igh-essen.com>
parents: 573
diff changeset
   193
ba69f7f34fbf Introduced DEVICE_MODULES variable in sysconfig file; enabled init
Florian Pose <fp@igh-essen.com>
parents: 573
diff changeset
   194
stop)
1190
5f2e38dddd4e Added spaces to init script.
Florian Pose <fp@igh-essen.com>
parents: 1185
diff changeset
   195
    echo -n "Shutting down EtherCAT master @VERSION@ "
588
ba69f7f34fbf Introduced DEVICE_MODULES variable in sysconfig file; enabled init
Florian Pose <fp@igh-essen.com>
parents: 573
diff changeset
   196
ba69f7f34fbf Introduced DEVICE_MODULES variable in sysconfig file; enabled init
Florian Pose <fp@igh-essen.com>
parents: 573
diff changeset
   197
    # unload EtherCAT device modules
ba69f7f34fbf Introduced DEVICE_MODULES variable in sysconfig file; enabled init
Florian Pose <fp@igh-essen.com>
parents: 573
diff changeset
   198
    for MODULE in ${DEVICE_MODULES} master; do
ba69f7f34fbf Introduced DEVICE_MODULES variable in sysconfig file; enabled init
Florian Pose <fp@igh-essen.com>
parents: 573
diff changeset
   199
        ECMODULE=ec_${MODULE}
ba69f7f34fbf Introduced DEVICE_MODULES variable in sysconfig file; enabled init
Florian Pose <fp@igh-essen.com>
parents: 573
diff changeset
   200
        if ! lsmod | grep -q "^${ECMODULE} "; then
698
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   201
            continue # ec_* module not loaded
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   202
        fi
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   203
        if ! ${RMMOD} ${ECMODULE}; then
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   204
            exit_fail
573
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   205
        fi;
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   206
    done
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   207
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   208
    sleep 1
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   209
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   210
    # reload previous modules
588
ba69f7f34fbf Introduced DEVICE_MODULES variable in sysconfig file; enabled init
Florian Pose <fp@igh-essen.com>
parents: 573
diff changeset
   211
    for MODULE in ${DEVICE_MODULES}; do
1556
52ec7297637c Init script and sysconfig file for generic Ethernet driver.
Florian Pose <fp@igh-essen.com>
parents: 1363
diff changeset
   212
        if [ ${MODULE} != "generic" ]; then
52ec7297637c Init script and sysconfig file for generic Ethernet driver.
Florian Pose <fp@igh-essen.com>
parents: 1363
diff changeset
   213
            if ! ${MODPROBE} ${MODPROBE_FLAGS} ${MODULE}; then
52ec7297637c Init script and sysconfig file for generic Ethernet driver.
Florian Pose <fp@igh-essen.com>
parents: 1363
diff changeset
   214
                echo Warning: Failed to restore ${MODULE}.
52ec7297637c Init script and sysconfig file for generic Ethernet driver.
Florian Pose <fp@igh-essen.com>
parents: 1363
diff changeset
   215
            fi
588
ba69f7f34fbf Introduced DEVICE_MODULES variable in sysconfig file; enabled init
Florian Pose <fp@igh-essen.com>
parents: 573
diff changeset
   216
        fi
ba69f7f34fbf Introduced DEVICE_MODULES variable in sysconfig file; enabled init
Florian Pose <fp@igh-essen.com>
parents: 573
diff changeset
   217
    done
573
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   218
698
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   219
    exit_success
573
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   220
    ;;
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   221
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   222
restart)
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   223
    $0 stop || exit 1
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   224
    sleep 1
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   225
    $0 start
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   226
    ;;
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   227
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   228
status)
1190
5f2e38dddd4e Added spaces to init script.
Florian Pose <fp@igh-essen.com>
parents: 1185
diff changeset
   229
    echo "Checking for EtherCAT master @VERSION@ "
1185
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   230
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   231
    # count masters in configuration file
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   232
    MASTER_COUNT=0
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   233
    while true; do
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   234
        DEVICE=$(eval echo "\${MASTER${MASTER_COUNT}_DEVICE}")
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   235
        if [ -z "${DEVICE}" ]; then break; fi
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   236
        MASTER_COUNT=$(expr ${MASTER_COUNT} + 1)
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   237
    done
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   238
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   239
    RESULT=0
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   240
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   241
    for i in `seq 0 $(expr ${MASTER_COUNT} - 1)`; do
1190
5f2e38dddd4e Added spaces to init script.
Florian Pose <fp@igh-essen.com>
parents: 1185
diff changeset
   242
        echo -n "Master${i} "
1185
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   243
        
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   244
        # Check if the master is in idle or operation phase
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   245
        ${ETHERCAT} master --master ${i} 2>/dev/null | \
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   246
            grep -qE 'Phase:[[:space:]]*Idle|Phase:[[:space:]]*Operation'
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   247
        EXITCODE=$?
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   248
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   249
        if [ ${EXITCODE} -eq 0 ]; then
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   250
            print_running
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   251
        else
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   252
            print_dead
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   253
            RESULT=1
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   254
        fi
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   255
    done
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   256
337ce4fc2383 Repaired init script status command.
Florian Pose <fp@igh-essen.com>
parents: 1090
diff changeset
   257
    exit ${RESULT}
573
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   258
    ;;
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   259
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   260
*)
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   261
    echo "USAGE: $0 {start|stop|restart|status}"
cdee4ea90ce9 Introduced device IDs; removed comment lines from 8139too; removed
Florian Pose <fp@igh-essen.com>
parents: 563
diff changeset
   262
    ;;
563
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   263
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   264
esac
d113b63c55c4 Changed structure of scripts subdirectory.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   265
698
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   266
if [ -r /etc/rc.status ]; then
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   267
    rc_exit
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   268
else
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   269
    exit 1
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   270
fi
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   271
6693ea7c9047 removed rc.status dependencies from init script.
Florian Pose <fp@igh-essen.com>
parents: 639
diff changeset
   272
#------------------------------------------------------------------------------