remove deprecated misdn-init and update Makefile and README

This commit is contained in:
Nadi Sarrar 2007-04-03 08:39:08 +00:00
parent 434e78c55a
commit 06244ce555
5 changed files with 5 additions and 889 deletions

View File

@ -51,7 +51,7 @@ all: VERSION test_old_misdn
cp $(MISDNDIR)/drivers/isdn/hardware/mISDN/Makefile.v2.6 $(MISDNDIR)/drivers/isdn/hardware/mISDN/Makefile
export MINCLUDES=$(MISDNDIR)/include ; export MISDNVERSION=$(MISDNVERSION); make -C $(LINUX) SUBDIRS=$(MISDN_SRC) modules $(CONFIGS)
install: all modules-install misdn-init
install: all modules-install
$(DEPMOD)
$(UPDATE_MODULES)
$(MODULES_UPDATE)
@ -62,18 +62,6 @@ modules-install:
mkdir -p $(INSTALL_PREFIX)/usr/include/linux/
cp $(MISDNDIR)/include/linux/*.h $(INSTALL_PREFIX)/usr/include/linux/
misdn-init:
mkdir -p $(INSTALL_PREFIX)/usr/sbin/
install -m755 misdn-init $(INSTALL_PREFIX)/usr/sbin/
if [ -d $(INSTALL_PREFIX)/etc/init.d ]; then \
if [ -e $(INSTALL_PREFIX)/etc/init.d/misdn-init ]; then rm -rf $(INSTALL_PREFIX)/etc/init.d/misdn-init; fi; \
ln -s $(INSTALL_PREFIX)/usr/sbin/misdn-init $(INSTALL_PREFIX)/etc/init.d/misdn-init; \
fi
mkdir -p $(INSTALL_PREFIX)/etc/modprobe.d
cp mISDN.modprobe.d $(INSTALL_PREFIX)/etc/modprobe.d/mISDN
mkdir -p $(INSTALL_PREFIX)/etc/modules.d
cp mISDN.modprobe.d $(INSTALL_PREFIX)/etc/modules.d/mISDN
test_old_misdn:
@if echo -ne "#include <linux/mISDNif.h>" | gcc -C -E - 2>/dev/null 1>/dev/null ; then \
if ! echo -ne "#include <linux/mISDNif.h>\n#if MISDN_MAJOR_VERSION < 4\n#error old mISDNif.h\n#endif\n" | gcc -C -E - 2>/dev/null 1>/dev/null ; then \
@ -85,7 +73,7 @@ test_old_misdn:
.PHONY: modules-install install all clean misdn-init VERSION
.PHONY: modules-install install all clean VERSION
force:
rm -f $(LINUX)/include/linux/mISDNif.h

View File

@ -1,55 +0,0 @@
misdn-init: init-script to auto-configure and load the mISDN kernel drivers
===========================================================================
This script makes it easy to configure and activate mISDN compatible
adapter cards. It scans an eyecandy config file named misdn-init.conf
for your card and port settings, then it loads the driver modules properly.
The misdn-init.conf can also be autogenerated by the misdn-init script.
---------------------------------------------------------------------------
Usage: /usr/sbin/misdn-init start|stop|restart|config|scan|help
--start scan /etc/misdn-init.conf and load the mISDN drivers
--stop unload the mISDN drivers
--restart see stop, then start
--config scan your PCI bus for mISDN compatible hardware and generate
a /etc/misdn-init.conf
--scan scan your PCI bus for mISDN compatible hardware and print
the results to the console
--help print the usage info
---------------------------------------------------------------------------
* Here is a quick overview on how to use misdn-init:
1) Get and install misdn-init:
$ wget http://www.beronet.com/downloads/chan_misdn/stable/chan_misdn.tar.gz
$ tar zxf chan_misdn.tar.gz
$ (as root) cp chan_misdn/misdn-init /usr/sbin/misdn-init
2) Let misdn-init scan your PCI bus for mISDN compatible hardware and write
the results into /etc/misdn-init.conf:
$ (as root) /usr/sbin/misdn-init config
3) (optional) Edit /etc/misdn-init.conf and set everything the way you want it.
This file is heavily commented, hence it should be self-explaining.
4) (optional, but recommended) Add misdn-init to your run level.
This is distribution dependend. Here an example for a debian system:
ATTENTION: If you have services in your runlevels that depend
on mISDN, make sure that misdn-init starts before, and
stops after them (this is done by changing the values
that are set to 60 in this example, more info: read the
manpage for update-rc.d).
$ (as root) update-rc.d misdn-init start 60 2 3 4 5 . stop 60 0 1 6 .
5) Run the following to start mISDN:
$ (as root) /usr/sbin/misdn-init start
---------------------------------------------------------------------------
* Report Bugs:
If you experience any bugs or have a feature request, please visit:
www.isdn4linux.de/mantis

View File

@ -3,7 +3,7 @@
This script makes it easy to configure and activate mISDN compatible
adapter cards. It scans an eyecandy config file named mISDN.conf
for your card and port settings, then it loads the driver modules properly.
The misdn-init.conf can also be autogenerated by the mISDN script.
The mISDN.conf can also be autogenerated by the mISDN script.
---------------------------------------------------------------------------
@ -17,9 +17,9 @@ xsltproc on debian, just type:
On other distros the package name might be libxmtools or likewise.
---------------------------------------------------------------------------
Usage: /usr/sbin/misdn-init start|stop|restart|config|scan|help
Usage: /usr/sbin/mISDN start|stop|restart|config|scan|help
--start scan /etc/misdn-init.conf and load the mISDN drivers
--start scan /etc/mISDN.conf and load the mISDN drivers
--stop unload the mISDN drivers
--restart see stop, then start
--config scan your PCI bus for mISDN compatible hardware and generate

View File

@ -1,25 +0,0 @@
install hfcmulti /usr/sbin/misdn-init start hfcmulti
remove hfcmulti /usr/sbin/misdn-init stop
install hfcpci /usr/sbin/misdn-init start hfcpci
remove hfcpci /usr/sbin/misdn-init stop
install hfcsusb /usr/sbin/misdn-init start hfcsusb
remove hfcsusb /usr/sbin/misdn-init stop
install hfcsmini /usr/sbin/misdn-init start hfcsmini
remove hfcsmini /usr/sbin/misdn-init stop
install xhfc /usr/sbin/misdn-init start xhfc
remove xhfc /usr/sbin/misdn-init stop
install avmfritz /usr/sbin/misdn-init start avmfritz
remove avmfritz /usr/sbin/misdn-init stop
install w6692pci /usr/sbin/misdn-init start w6692pci
remove w6692pci /usr/sbin/misdn-init stop
install sedlfax /usr/sbin/misdn-init start sedlfax
remove sedlfax /usr/sbin/misdn-init stop

View File

@ -1,792 +0,0 @@
#!/bin/bash
################################################################################
#
# misdn-init init script
#
# Copyright (C) 2005, Nadi Sarrar
#
# Nadi Sarrar <nadi@beronet.com>
#
# This program is free software, distributed under the terms of
# the GNU General Public License
#
#
# USAGE:
#
# /usr/sbin/misdn-init start|stop|restart|config|scan|help
#
# chkconfig: 2345 35 60
# description: mISDN Kernel Modules
#
# CONFIGURATION:
#
# Path to your misdn-init.conf:
#
misdn_init_conf="/etc/misdn-init.conf"
#
################################################################################
#
# change this to modify the user/group settings of /dev/mISDN
#
USER=asterisk
GROUP=asterisk
# HFC 8/4 (S0) Options
master_clock=17
# HFC-E1 Options
optical=17
los=19
ais=20
slip=21
nocrc4=24
# Card Settings
ulaw=9
dtmf=10
pcm_slave=12
ignore_pcm_frameclock=13
rxclock=14
crystalclock=19
watchdog=20
#dsp defaults
dsp_options=0
poll_option=
dsp_poll_option=
dtmfthreshold_option=
function check_cmd {
if ! which "${1}" > /dev/null; then
if [ "$(id -u)" != "0" ]; then
echo "[!!] FATAL: $1 not in path, please install and/or be root."
else
echo "[!!] FATAL: $1 not in path, please install."
fi
if [ "${2}" != "notfatal" ] ; then
exit 1
fi
else
var=$(echo ${1} | tr a-z A-Z)
eval "$var=`which ${1}`"
fi
}
check_cmd modprobe
check_cmd modinfo
check_cmd rmmod
check_cmd insmod
check_cmd lspci
check_cmd lsusb notfatal
check_cmd mknod
check_cmd bc
check_cmd cut
check_cmd wc
function check_asterisk {
if ps ax | grep -v grep | grep asterisk > /dev/null ; then asterisk -rx "stop now" ; fi
}
function create_card_db
{
cardline=""
cardcount=1
skipnext=0
IFS=$'\n'
NL="
"
function addcard {
cardline="${cardline}${cardcount},${1}${NL}"
let "cardcount = ${cardcount} + 1"
}
function addport {
let "portcount = ${portcount} + ${1}"
}
for line in $(${LSPCI} -n -d 0xd161:b410); do
addcard "4,0x4"
done
for line in $(${LSPCI} -n | sed -n 's/^\(0000:\|\)\([0-9a-f]\{2\}:[0-9a-f]\{2\}.[0-9a-f]\{1\}\)\( Class \| \)[0-9a-f]\{4\}: 1397:\([0-9a-f]\{4\}\).*$/\4 \2/p'); do
if [ ${skipnext} -eq 1 ]; then
skipnext=0
continue
fi
case "${line}" in
30b1*)
case "${line:5}" in
00*)
addcard "1,0x1"
;;
*)
if [ $(${LSPCI} -n -s ${line:5:3} | ${WC} -l) -eq 2 ]; then
addcard "2,2E1"
skipnext=1
else
addcard "1,0x1"
fi
;;
esac
;;
16b8*)
addcard "8,0x8"
;;
08b4*)
if ${LSPCI} -n -v -s "${line:5}" | grep "Subsystem" | grep "1397:b567" > /dev/null ; then
addcard "1,0x4"
elif ${LSPCI} -n -v -s "${line:5}" | grep "Subsystem" | grep "1397:b566\|1397:b569" > /dev/null ; then
addcard "2,0x4"
else
addcard "4,0x4"
fi
;;
esac
done
for line in $(${LSPCI} -n | grep "1397:\(2bd\(0\|6\|7\|8\|9\|a\|b\|c\)\|b100\)\|1043:0675\|0871:ffa\(1\|2\)\|1051:0100\|15b0:2bd0\|114f:007\(0\|1\|2\|3\)\|13d1:2bd1\|182d:3069"); do
addcard "1,hfcpci"
done
for line in $(${LSPCI} -n | grep "1244:\(0a00\|0e00\)"); do
addcard "1,avmfritz"
done
for line in $(${LSPCI} -n -d 1050:6692); do
addcard "1,w6692pci"
done
if [ -e ${LSUSB} ]; then
for line in $(${LSUSB} | grep "0959:2bd0\|0675:1688\|07b0:0007\|0742:200\(7\|8\|9\|A\)\|08e3:0301\|07fa:084\(7\|8\)\|07ba:0006"); do
addcard "1,hfcsusb"
done
fi
echo "${cardline}"
}
function load_card_modules {
carddb=$(create_card_db)
function find_carddb_line {
i=1
for l in ${carddb} ; do
if [ $i -eq $1 ] ; then
echo $l
return
fi
let "i=$i+1"
done
}
if [ ! -z "$1" ] ; then
echo "Loading only $1"
fi
IFS=$'\n'
skipnr=0
for line in $(sed -n -e '/^[^#]/p' ${misdn_init_conf});
do
var=$(echo "${line}" | ${CUT} -d "=" -f1)
val=$(echo "${line}" | ${CUT} -d "=" -f2)
case "${var}" in
card)
#echo "processing line: $val"
nr=$(echo "${val}" | ${CUT} -d "," -f1)
mod=$(echo "${val}" | ${CUT} -d "," -f2)
opns=$(echo "${val}" | ${CUT} -d "," -f3-)
#getting portcount from carddb
ports=$(find_carddb_line $nr | ${CUT} -d "," -f2)
let "nr = ${nr} + ${skipnr}"
#echo "nr $nr ports $ports mod $mod opns: $opns"
case "${mod}" in
2E1)
hfcmulti[${nr}]=1
hfcmulti[$((${nr} + 1))]=1
let "hfcports = ${hfcports} + ${ports}"
IFS=$','
for li in ${opns}; do
hfcmulti[${nr}]=$(echo "obase=10;2^(${!li}-1)+${hfcmulti[${nr}]}" | ${BC})
if [ "${li}" != "pcm_slave" ]; then
hfcmulti[$((${nr} + 1))]=$(echo "obase=10;2^(${!li}-1)+${hfcmulti[$((${nr}+1))]}" | ${BC})
fi
done
IFS=$'\n'
hfcmulti[$((${nr} + 1))]=$(echo "obase=10;2^(${pcm_slave}-1)+${hfcmulti[$((${nr}+1))]}" | ${BC})
let "skipnr = ${skipnr} + 1"
;;
0x*)
hfcmulti[${nr}]=$(echo ${mod} | sed -e "s/^0x\([0-9]*\)/\1/")
let "hfcports = ${hfcports} + ${ports}"
IFS=$','
for li in ${opns}; do
hfcmulti[${nr}]=$(echo "obase=10;2^(${!li}-1)+${hfcmulti[${nr}]}" | ${BC})
done
IFS=$'\n'
;;
*)
other_card[${nr}]=${mod}
;;
esac
;;
te_ptp)
IFS=$','
for li in ${val}; do
layermask[${li}]="0xf"
protocol[${li}]=34 # 0x22 == 34
done
IFS=$'\n'
;;
te_ptmp)
IFS=$','
for li in ${val}; do
layermask[${li}]="0xf"
protocol[${li}]=2 # 0x2 == 2
done
IFS=$'\n'
;;
nt_*)
IFS=$','
for li in ${val}; do
layermask[${li}]="0x3"
protocol[${li}]=18 # 0x12 == 18
done
IFS=$'\n'
;;
te_capi_ptp)
IFS=$','
for li in ${val}; do
layermask[${li}]="0x0"
protocol[${li}]=34 # 0x22 == 34
done
IFS=$'\n'
export addcapi=1
;;
te_capi_ptmp)
IFS=$','
for li in ${val}; do
layermask[${li}]="0x0"
protocol[${li}]=2 # 0x2 == 2
done
IFS=$'\n'
export addcapi=1
;;
option)
port=`echo "${val}" | sed -e "s/^\([0-9]*\),.*/\1/"`
opt=`echo "${val}" | sed -e "s/^[0-9]*,\(.*\)/\1/"`
if [ -z ${protocol[${port}]} ]; then
protocol[${port}]="0"
fi
IFS=$','
for li in ${opt}; do
protocol[${port}]=$(echo "obase=10;2^(${!li}-1)+${protocol[${port}]}" | ${BC})
done
IFS=$'\n'
;;
poll)
poll=${val}
poll_option=poll=${val}
;;
dsp_poll)
dsp_poll_option=poll=${val}
;;
pcm)
pcm=${val}
;;
dsp_options)
export dsp_options=${val}
;;
dtmfthreshold)
export dtmfthreshold_option="dtmfthreshold=${val}"
;;
debug)
debug=${val}
;;
timer)
timer=${val}
;;
*)
echo "unknown variable: ${var}"
;;
esac
done
echo "-----------------------------------------"
echo " Loading module(s) for your misdn-cards:"
echo "-----------------------------------------"
card_index=1
port_index=1
while [ ! -z ${hfcmulti[${card_index}]} ] || [ ! -z ${other_card[${card_index}]} ];
do
if [ ! -z ${hfcmulti[${card_index}]} ]; then
# MODPROBE COMMAND FOR hfcmulti CARD
hfcmulti_type="type="
hfcmulti_prot="protocol="
hfcmulti_layer="layermask="
while [ ! -z ${hfcmulti[${card_index}]} ];
do
hfcmulti_type="${hfcmulti_type}$(echo "obase=16;\"0x\";${hfcmulti[${card_index}]}" | ${BC} ),"
let "card_index = ${card_index} + 1"
done
while [ ${hfcports} -gt 0 ];
do
if [ ! -z ${protocol[${port_index}]} ]; then
hfcmulti_prot="${hfcmulti_prot}$(echo "obase=16;\"0x\";${protocol[${port_index}]}" | ${BC}),"
else
hfcmulti_prot="${hfcmulti_prot}0x2,"
fi
if [ ! -z ${layermask[${port_index}]} ]; then
hfcmulti_layer="${hfcmulti_layer}${layermask[${port_index}]},"
else
hfcmulti_layer="${hfcmulti_layer}0xf,"
fi
let "port_index = ${port_index} + 1"
let "hfcports = ${hfcports} - 1"
done
hfcmulti_type="$(echo ${hfcmulti_type} | sed -e 's/^\(.*\),$/\1/')"
hfcmulti_prot="$(echo ${hfcmulti_prot} | sed -e 's/^\(.*\),$/\1/')"
hfcmulti_layer="$(echo ${hfcmulti_layer} | sed -e 's/^\(.*\),$/\1/')"
hfcmulti_cmd="${MODPROBE} --ignore-install hfcmulti ${hfcmulti_type} ${hfcmulti_prot} ${hfcmulti_layer}"
if [ ! -z ${poll} ]; then
hfcmulti_cmd="${hfcmulti_cmd} poll=${poll}"
fi
if [ ! -z ${pcm} ]; then
hfcmulti_cmd="${hfcmulti_cmd} pcm=${pcm}"
fi
if [ ! -z ${debug} ]; then
hfcmulti_cmd="${hfcmulti_cmd} debug=${debug}"
fi
if [ ! -z ${timer} ]; then
hfcmulti_cmd="${hfcmulti_cmd} timer=${timer}"
fi
if [ -z "$1" ] ; then
echo ${hfcmulti_cmd}
eval ${hfcmulti_cmd}
else
if [ "$1" = "hfcmulti" ] ; then
echo ${hfcmulti_cmd}
eval ${hfcmulti_cmd}
fi
fi
else
# MODPROBE COMMAND FOR _NON_ hfcmulti CARD
other_mod="${other_card[${card_index}]}"
other_cmd="${MODPROBE} --ignore-install ${other_mod}"
if [ ! -z ${protocol[${port_index}]} ]; then
other_prot="protocol=$(echo "obase=16;\"0x\";${protocol[${port_index}]}" | ${BC}),"
else
other_prot="protocol=0x2,"
fi
if [ ! -z ${layermask[${port_index}]} ]; then
other_layer="layermask=${layermask[${port_index}]},"
else
other_layer="layermask=0xf,"
fi
other_extra=""
modinfo $other_mod | egrep -q 'parm: *poll' && other_extra="$other_extra ${poll_option}"
let "prev = ${card_index}"
let "card_index = ${card_index} + 1"
let "port_index = ${port_index} + 1"
while [ "${other_card[${card_index}]}" == "${other_card[${prev}]}" ];
do
if [ ! -z ${protocol[${port_index}]} ]; then
other_prot="${other_prot}$(echo "obase=16;\"0x\";${protocol[${port_index}]}" | ${BC}),"
else
other_prot="${other_prot}0x2,"
fi
if [ ! -z ${layermask[${port_index}]} ]; then
other_layer="${other_layer}${layermask[${port_index}]},"
else
other_layer="${other_layer}0xf,"
fi
let "prev = ${card_index}"
let "card_index = ${card_index} + 1"
let "port_index = ${port_index} + 1"
done
other_prot="$(echo ${other_prot} | sed -e 's/^\(.*\),$/\1/')"
other_layer="$(echo ${other_layer} | sed -e 's/^\(.*\),$/\1/')"
other_cmd="${other_cmd} ${other_prot} ${other_layer} ${other_extra}"
if [ -z "$1" ] ; then
echo "${other_cmd}"
eval ${other_cmd}
else
if [ "$1" = "${other_card[${prev}]}" ] ; then
echo ${other_cmd}
eval ${other_cmd}
fi
fi
fi
done
}
function unload_card_modules {
IFS=$'\n'
for line in $(sed -ne '/^[^#]/p' ${misdn_init_conf});
do
var=$(echo "${line}" | ${CUT} -d "=" -f 1)
val=$(echo "${line}" | ${CUT} -d "=" -f 2)
case "${var}" in
card)
nr=$(echo "${val}" | ${CUT} -d "," -f 1)
mod=$(echo "${val}" | ${CUT} -d "," -f 2)
case "${mod}" in
2E1)
modulelist[${nr}]=hfcmulti
;;
0x*)
modulelist[${nr}]=hfcmulti
;;
*)
modulelist[${nr}]=${mod}
;;
esac
;;
esac
done
echo "-------------------------------------------"
echo " Unloading module(s) for your misdn-cards:"
echo "-------------------------------------------"
rmmod_cmd="${RMMOD} ${modulelist[1]}"
echo "${rmmod_cmd}"
eval ${rmmod_cmd}
index=2
prev=1
while [ ! -z ${modulelist[${index}]} ];
do
if [ ${modulelist[${index}]} != ${modulelist[${prev}]} ]; then
rmmod_cmd="${RMMOD} ${modulelist[${index}]}"
echo "${rmmod_cmd}"
eval ${rmmod_cmd}
fi
let "prev = ${index}"
let "index = ${index} + 1"
done
}
function create_misdn_init_conf {
cardline=""
cardcount=1
portcount=0
cardconf=""
IFS=$'\n'
NL="
"
carddb=$(create_card_db)
for line in $carddb ; do
tmp="card=$(echo $line | ${CUT} -d, -f1,3)"
let "portcount = ${portcount} + $(echo $line | ${CUT} -d, -f2)"
cardline="${cardline}${tmp}${NL}"
done
function die {
echo "[!!] ${1}"
exit 1
}
if [ "${1}" == "scan" ]; then
echo "[OK] found the following devices:"
echo "${cardline}[ii] run \"/usr/sbin/misdn-init config\" to store this information to ${misdn_init_conf}"
else
index=1
portline="te_ptmp="
while [ ${index} -le ${portcount} ]; do
portline="${portline}${index},"
let "index = ${index} + 1"
done
portline="$(echo ${portline} | sed -e 's/^\(.*\),$/\1/')"
misdn_cfg_pt1="#
# Configuration file for your misdn hardware
#
# Usage: /usr/sbin/misdn-init start|stop|restart|config|scan|help
#
#
# Card Settings
#
# Syntax: card=<number>,<type>[,<option>...]
#
# <number> count your cards beginning with 1
# <type> either 0x1,0x4 or 0x8 for your hfcmulti hardware,
# or the name of your card driver module.
# <option> ulaw - uLaw (instead of aLaw)
# dtmf - enable DTMF detection on all B-channels
#
# pcm_slave - set PCM bus into slave mode
# If you have a set of cards, all wired via PCM. Set
# all cards into pcm_slave mode and leave one out.
# The left card will automatically be Master.
#
# ignore_pcm_frameclock - this can be set in conjunction with
# pcm_slave. If this card has a
# PCI Bus Position before the Position
# of the Master, then this port cannot
# yet receive a frameclock, so it must
# ignore the pcm frameclock.
#
# rxclock - use clocking for pcm from ST Port
# crystalclock - use clocking for pcm from PLL (genrated on board)
# watchdog - This dual E1 Board has a Watchdog for
# transparent mode
#
#"
misdn_cfg_pt2="#
# Port settings
#
# Syntax: <port_type>=<port_number>[,<port_number>...]
#
# <port_type> te_ptp - TE-Mode, PTP
# te_ptmp - TE-Mode, PTMP
# te_capi_ptp - TE-Mode (capi), PTP
# te_capi_ptmp - TE-Mode (capi), PTMP
# nt_ptp - NT-Mode, PTP
# nt_ptmp - NT-Mode, PTMP
# <port_number> port that should be considered
#"
misdn_cfg_pt3="#
# Port Options
#
# Syntax: option=<port_number>,<option>[,<option>...]
#
# <option> master_clock - use master clock for this S/T interface
# (only once per chip, only for HFC 8/4)
# optical - optical (only HFC-E1)
# los - report LOS (only HFC-E1)
# ais - report AIS (only HFC-E1)
# slip - report SLIP (only HFC-E1)
# nocrc4 - turn off crc4 mode use double frame instead
# (only HFC-E1)
#
# The master_clock option is essential for retrieving and transmitting
# faxes to avoid failures during transmission. It tells the driver to
# synchronize the Card with the given Port which should be a TE Port and
# connected to the PSTN in general.
#
#option=1,master_clock
#option=2,ais,nocrc4
#option=3,optical,los,ais,slip
#
# General Options for your hfcmulti hardware
#
# poll=<number>
#
# Only one poll value must be given for all cards.
# Give the number of samples for each fifo process.
# By default 128 is used. Decrease to reduce delay, increase to
# reduce cpu load. If unsure, don't mess with it!!!
# Valid is 32, 64, 128, 256.
#
# dsp_poll=<number>
# This is the poll option which is used by mISDN_dsp, this might
# differ from the one given by poll= for the hfc based cards, since
# they can only use multiples of 32, the dsp_poll is dependant on
# the kernel timer setting which can be found in the CPU section
# in the kernel config. Defaults are there either 100Hz, 250Hz
# or 1000Hz. If your setting is either 1000 or 250 it is compatible
# with the poll option for the hfc chips, if you have 100 it is
# different and you need here a multiple of 80.
# The default is to have no dsp_poll option, then the dsp itself
# finds out which option is the best to use by itself
#
# pcm=<number>
#
# Give the id of the PCM bus. All PCM busses with the same ID
# are expected to be connected and have equal slots.
# Only one chip of the PCM bus must be master, the others slave.
#
# debug=<number>
#
# Enable debugging (see hfc_multi.h for debug options).
#
# dsp_options=<number>
#
# set this to 2 and you'll have software bridging instead of
# hardware bridging.
#
#
# dtmfthreshold=<milliseconds>
#
# Here you can tune the sensitivity of the dtmf tone recognizer.
#
# timer=<1|0>
#
# set this to 1 if you want hfcmulti to register at ztdummy (zaptel)
# and provide a 1khz timing source for it. This makes it possible
# to have an accurate timing source for asterisk through zaptel from
# hfcmulti to make applications like Meetme and faxing between wctdm
# and hfcmulti work properly.
#
poll=128
dsp_poll=128
dsp_options=0
dtmfthreshold=100
debug=0"
if [ -f ${misdn_init_conf} ]; then
cp "${misdn_init_conf}" "${misdn_init_conf}.save" || die "could not backup your existing ${misdn_init_conf}!"
echo "[OK] ${misdn_init_conf} already present. backing it up to ${misdn_init_conf}.save"
fi
echo "${misdn_cfg_pt1}${NL}${cardline}${NL}${misdn_cfg_pt2}${NL}${portline}${NL}${NL}${misdn_cfg_pt3}" > ${misdn_init_conf} || die "could not write to /etc/misdn-init.conf!"
#echo "${misdn_cfg_pt1}${NL}${cardline}${NL}${misdn_cfg_pt2}${NL}${portline}${NL}${NL}${misdn_cfg_pt3}" > testconf || die "could not write to /etc/misdn-init.conf!"
echo "[OK] ${misdn_init_conf} created. It's now safe to run \"/usr/sbin/misdn-init start\""
if [ ${portcount} -gt 1 ]; then
echo "[ii] make your ports (1-${portcount}) available in asterisk by editing \"/etc/asterisk/misdn.conf\""
elif [ ${portcount} -eq 1 ]; then
echo "[ii] make your port (1) available in asterisk by editing \"/etc/asterisk/misdn.conf\""
fi
fi
}
function check_cfg_file {
if [ ! -f ${misdn_init_conf} ]; then
if [ ! -z "$1" ] ; then
/usr/sbin/misdn-init config
else
echo "[!!] failed to load: ${misdn_init_conf}"
echo "run \"/usr/sbin/misdn-init config\" to scan your devices and generate a basic config file."
exit 1
fi
fi
}
function dsp_modules {
moddir=$(LC_ALL=C ${MODINFO} mISDN_core | sed -ne 's/filename:[^\/]*\(.*\/\)mISDN_core.ko/\1/p')
for mod in $(ls ${moddir}); do
case "${mod}" in
mISDN_dsp_*)
echo "${1} ${mod%%.ko}"
${1} ${mod%%.ko}
;;
esac
done
}
# MAIN #############
case "$1" in
start|--start)
check_cfg_file $2
${MODPROBE} capi
${MODPROBE} mISDN_core debug=0
${MODPROBE} mISDN_l1 debug=0
${MODPROBE} mISDN_l2 debug=0
${MODPROBE} l3udss1 debug=0
${MODPROBE} mISDN_capi
load_card_modules $2
echo "${MODPROBE} mISDN_dsp debug=0x0 options=$dsp_options $dsp_poll_option $dtmfthreshold_option"
${MODPROBE} mISDN_dsp debug=0x0 options=$dsp_options $dsp_poll_option $dtmfthreshold_option
dsp_modules ${MODPROBE}
sleep 1
if [ ! -e /dev/mISDN ]; then
$MKNOD /dev/mISDN c 46 0
if grep asterisk /etc/passwd > /dev/null; then
chown $USER:$GROUP /dev/mISDN
fi
echo "[i] creating device node: /dev/mISDN"
fi
;;
stop|--stop)
check_cfg_file
check_asterisk
dsp_modules "${MODPROBE} -r"
for mod in $(lsmod | sed -ne '/Module/!{s/\([^ ]*\).*/\1/;p}');
do
case "${mod}" in
mISDN_capi | mISDN_dsp | l3udss1 | mISDN_l2 | mISDN_l1 | mISDN_isac )
eval "${RMMOD} ${mod}"
;;
esac
done
unload_card_modules
${RMMOD} mISDN_core
;;
restart|--restart)
check_cfg_file
sh $0 stop
sleep 2 # some phones will release tei when layer 1 is down
sh $0 start
;;
config|--config)
create_misdn_init_conf
;;
scan|--scan)
create_misdn_init_conf scan
;;
help|--help)
echo "Usage: $0 {start|stop|restart|config|scan|help}"
exit 0
;;
*)
echo "Usage: $0 {start|stop|restart|config|scan|help}"
exit 2
;;
esac