summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTzafrir Cohen <tzafrir.cohen@xorcom.com>2009-05-19 16:33:50 +0000
committerTzafrir Cohen <tzafrir.cohen@xorcom.com>2009-05-19 16:33:50 +0000
commit096417e3731173f0a70625d413b4d68a449adec1 (patch)
tree3460b4dfe1e47dfc87936aa9b4537b9077d99611
parentebc8c8a972baf07c0020f8b582b4efa01f801286 (diff)
dahdi.init: moved test for astribanks into waitfor_xpds
If the system starts with an Astribank with no firmware, the firmware loading may take a while and the Astribank only becomes ready some time after the DAHDI init script starts. This means that the test at the beginning of xpp_startup() in dahdi.init fails to find an Astribank, and the init script simply continues ignoring this. This changeset moves the testing inside the script waitfor_xpds. The script now: 1. Tests for an Astribank using dahdi_hardware and exists immediately if none found. 2. A loop (of maximum 10 seconds) waits for the first Astribank to be detected by the driver. 3. Waiting for the initialization of all the Astribanks to complete (The original waitfor_xpds) The support for the old procfs iinterface has been removed, as it has never been used with DAHDI. git-svn-id: http://svn.asterisk.org/svn/dahdi/tools/trunk@6646 a0bf4364-ded3-4de4-8d8a-66a801d63aff
-rwxr-xr-xdahdi.init2
-rwxr-xr-xxpp/waitfor_xpds33
2 files changed, 21 insertions, 14 deletions
diff --git a/dahdi.init b/dahdi.init
index 5a7a728..5c1a3f0 100755
--- a/dahdi.init
+++ b/dahdi.init
@@ -89,8 +89,6 @@ unload_module() {
# Initialize the Xorcom Astribank (xpp/) using perl utiliites:
xpp_startup() {
# do nothing if there are no astribank devices:
- if ! grep -q connected /proc/xpp/xbuses 2>/dev/null; then return 0; fi
-
if ! /usr/share/dahdi/waitfor_xpds; then return 0; fi
# overriding locales for the above two, as perl can be noisy
diff --git a/xpp/waitfor_xpds b/xpp/waitfor_xpds
index ebac3a0..71c5187 100755
--- a/xpp/waitfor_xpds
+++ b/xpp/waitfor_xpds
@@ -26,22 +26,32 @@
set -e
ab_list() {
+ # Only check /sys info (don't use /proc anymore).
ab=`find /sys/bus/astribanks/devices/xbus-*/ -name waitfor_xpds 2> /dev/null || :`
- if [ "$ab" = "" ]; then
- ab=`find /proc/xpp/XBUS-[0-9]*/ -name waitfor_xpds 2> /dev/null || :`
- procfiles=1
- fi
- if [ "$ab" = "" ]; then
- echo 1>&2 "$0: No XBUSES to wait for. Aborting..."
- exit 1
- fi
- if [ -n "$procfiles" ]; then
- echo 1>&2 "$0: No /sys attributes, fallback to /proc interface..."
- fi
echo $ab
}
+# Any hardware?
+if [ "`dahdi_hardware | grep xpp_usb`" = "" ]; then
+ exit 0
+fi
+
+# Wait for driver and first device
+echo -n 1>&2 "Astribanks detection "
+tries=10
+while [ ! -e "/sys/bus/astribanks/devices/xbus-00" ]
+do
+ if [ "$tries" -le 0 ]; then
+ exit 1
+ fi
+ echo -n 1>&2 "."
+ sleep 1
+ ((tries--))
+done
+echo ""
+# Wait for device to stabilize and XPD's to finish initalizations
+echo 1>&2 "Astribanks initalization "
while
if ! ab=`ab_list`; then
exit 1
@@ -49,6 +59,5 @@ while
test "$oldab" != "$ab"
do
oldab="$ab"
- echo 1>&2 "Waiting for XPDS"
cat $ab
done