wanpipe-3.4.5.tgz

This commit is contained in:
Harald Welte 2021-12-29 18:28:15 +01:00
parent 539174b95a
commit 7bbfefe672
98 changed files with 1747 additions and 9693 deletions

View File

@ -8,6 +8,26 @@ For more info visit: http://wiki.sangoma.com
------------------------------------------------------------------------------
* Tue Aug 18 2009 Nenad Corbic <ncorbic@sangoma.com> - Stable - 3.4.5
=====================================================================
- New firmawre feature for A101/2/5/8: Free Run Timer Interrupt
The AFT T1/E1 cards will now provide perfect timing to zatpel/dahdi
even when the ports are not connected. The free run interrupt
will be enabled when all zaptel/dahdi ports are down, or on
inital card start. To test this feature just start a wanpipe
port with zaptel/dahdi and run zttest.
A108 firmare V38
A104/2/1/ firmware V36
- Added module inc cound when zaptel/dahdi starts.
So wanpipe drivers do not crash if one tries to unload
zaptel/dahdi before stopping wanpipe drivers.
- Dahdi 2.2 Support
- Updated for 2.6.30 kernel
* Fri Jun 17 2009 Nenad Corbic <ncorbic@sangoma.com> - Stable - 3.4.4
=====================================================================

View File

@ -61,6 +61,10 @@ ifndef INSTALLPREFIX
INSTALLPREFIX=
endif
ifndef LIBPREFIX
LIBPREFIX=/usr
endif
ifndef 64BIT_4G
64BIT_4G="Disabled"
else
@ -91,6 +95,9 @@ ZAPHDLC_PRIV=/etc/wanpipe/.zaphdlc
EXTRA_CFLAGS += $(EXTRA_FLAGS)
#Enable for debugging only
#EXTRA_CFLAGS += -DWANPIPE_PERFORMANCE_DEBUG
#Check if zaptel exists
ifneq (,$(wildcard $(ZAPDIR)/zaptel.h))
@ -298,7 +305,7 @@ all_util: install_inc
PREFIX=$(INSTALLPREFIX) HOSTCFLAGS="$(EXTRA_UTIL_FLAGS)" HOSTCFLAGS="$(EXTRA_UTIL_FLAGS)" ARCH=$(ARCH)
all_lib:
$(shell cd api/libsangoma; ./init-automake.sh > /dev/null; ./configure --prefix=/usr > /dev/null;)
$(shell cd api/libsangoma; ./init-automake.sh >> $(PWD)/.cfg_log; ./configure --prefix=$(LIBPREFIX) >> $(PWD)/.cfg_log;)
$(MAKE) -C api/libsangoma clean
$(MAKE) -C api/libsangoma all
@ -358,9 +365,9 @@ install_inc:
@\cp -rf $(PWD)/patches/kdrivers/wanec/*.h $(INSTALLPREFIX)/usr/include/wanpipe/
smgbri:
@cd ssmg/libsangoma.trunk; ./configure --prefix=/usr ; cd ../..;
@cd ssmg/libsangoma.trunk; ./configure --prefix=$(LIBPREFIX) ; cd ../..;
$(MAKE) -C ssmg/libsangoma.trunk/ CC=$(CC) PREFIX=$(INSTALLPREFIX) KDIR=$(KDIR)
@cd ssmg/sangoma_mgd.trunk/lib/libteletone; ./configure --prefix=/usr ; cd ../../..;
@cd ssmg/sangoma_mgd.trunk/lib/libteletone; ./configure --prefix=$(LIBPREFIX) ; cd ../../..;
$(MAKE) -C ssmg/sangoma_mgd.trunk/lib/libteletone CC=$(CC) PREFIX=$(INSTALLPREFIX) KDIR=$(KDIR)
$(MAKE) -C ssmg/sangoma_mgd.trunk/ CC=$(CC) PREFIX=$(INSTALLPREFIX) KDIR=$(KDIR) ASTDIR=$(ASTDIR)

352
Setup
View File

@ -9,6 +9,11 @@
# as published by the Free Software Foundation; either version
# 2 of the License, or (at your option) any later version.
# ----------------------------------------------------------------------------
# Jul 29, 2009 Konrad Hammel Added --with-asterisk option
# Jul 27, 2009 Konrad Hammel Update to not compile unneeded utilities in
# TDM_VOICE mode.
# Jul 24, 2008 Konrad Hammel Removed the addition of UDEV rules for Dahdi
# installs, only needed for Zaptel
# Jul 30, 2008 Jignesh Patel Added check for sctp utlity
# May 30, 2008 Jignesh Patel Fixed bootscript installation failure
# Mar 12, 2008 Konrad Hammel Updated for Zaptel-1.4.9 (kernel sub-dir)
@ -1011,10 +1016,9 @@ get_kernel_ver ()
local err=0
IFS="="
while read name value;
do
if [ $AWK_SUPPORT = YES ]; then
name=`echo $name | awk '{ gsub(" ", "") ; print }'`
elif [ $BASH_SUPPORT -gt 1 ]; then
@ -1048,14 +1052,14 @@ get_kernel_ver ()
KERNEL_VERSION=$KVER"."$KPATCH"."$KLVL$KEVER
if [ $KVER -eq 2 ] && [ $KPATCH -eq 6 ]; then
if [ "$KVER" -eq "2" ] && [ "$KPATCH" -eq "6" ]; then
KERN_VER=26;
LINUXDRIVERS_NET="drivers/net/wan"
KLVL=${KLVL:-6}
elif [ $KVER -eq 2 ] && [ $KPATCH -eq 4 ]; then
elif [ "$KVER" -eq "2" ] && [ "$KPATCH" -eq "4" ]; then
KERN_VER=24;
LINUXDRIVERS_NET="drivers/net/wan"
elif [ $KVER -eq 2 ] && [ $KPATCH -eq 2 ]; then
elif [ "$KVER" -eq "2" ] && [ "$KPATCH" -eq "2" ]; then
KERN_VER=22;
LINUXDRIVERS_NET="drivers/net"
if [ $ADSL_PROT = YES ];then
@ -2093,7 +2097,7 @@ WARNING: The Linux source in $SOURCEDIR has not been configured.
echo
echo "Compiling ${DISTR_NAME} WanCfg Utility ..."
echo -n "Compiling ${DISTR_NAME} WanCfg Utility ..."
WANCFG_DEFS=
if [ "$TDM_PROT" = "YES" ]; then
@ -2106,7 +2110,7 @@ WARNING: The Linux source in $SOURCEDIR has not been configured.
if [ $? -eq 0 ]
then
echo -e "Done.\n"
echo -e "Done.\n\n"
else
echo
echo -e "Failed!\n"
@ -2126,104 +2130,124 @@ WARNING: The Linux source in $SOURCEDIR has not been configured.
cd $PROD_HOME/util/misc
echo
echo -n "Compiling WANPIPE Misc Utilities ..."
eval "make CC=$CC SYSINC=$SOURCEDIR/include > /dev/null"
echo -e "Done.\n"
echo -e "Done.\n\n"
echo
echo -n "Compiling WANPIPE LibSangoma API library ..."
cd $PROD_HOME/api
if [ $superuser = "YES" ] && [ -z $ROOT ]; then
eval "find /usr/local/lib -name 'libsangoma*' > /dev/null 2>/dev/null"
if [ $? -eq 0 ]; then
eval "find /usr/local/lib -name 'libsangoma*' | xargs rm > /dev/null 2>/dev/null"
eval "find /usr/local/include -name 'libsangoma*' | xargs rm > /dev/null 2>/dev/null"
fi
eval "find /usr/local/lib -name 'libstelephony*' > /dev/null 2>/dev/null"
if [ $? -eq 0 ]; then
eval "find /usr/local/lib -name 'libstelephony*' | xargs rm > /dev/null 2>/dev/null"
eval "find /usr/local/include -name 'libstelephony*' | xargs rm > /dev/null 2>/dev/null"
fi
fi
cd libsangoma
eval "./init-automake.sh >> $CMP_LOG 2>> $CMP_LOG"
eval "./configure --prefix=/usr >> $CMP_LOG 2>> $CMP_LOG"
eval "make clean >> $CMP_LOG 2>> $CMP_LOG"
eval "make CC=$CC SYSINC=$WANPIPE_INCLUDE_DIR >> $CMP_LOG 2>> $CMP_LOG"
if [ $? -eq 0 ]; then
echo -e "Done.\n"
if [ $TDM_VOICE_ONLY = 'YES' ]; then
echo -e "Compiling WANPIPE LibSangoma API Library ... skipped, not required.\n\n"
else
echo -e "Failed. \n"
pause
fi
eval "make install DESTDIR=$ROOT >> $CMP_LOG 2>> $CMP_LOG"
echo -n "Compiling WANPIPE LibSangoma API library ..."
cd ..
cd $PROD_HOME/api
if [ -e libstelephony ]; then
echo -n "Compiling WANPIPE LibStelephony API library ..."
cd libstelephony
if [ $superuser = "YES" ] && [ -z $ROOT ]; then
eval "find /usr/local/lib -name 'libsangoma*' > /dev/null 2>/dev/null"
if [ $? -eq 0 ]; then
eval "find /usr/local/lib -name 'libsangoma*' | xargs rm -f > /dev/null 2>/dev/null"
eval "find /usr/local/include -name 'libsangoma*' | xargs rm -f > /dev/null 2>/dev/null"
fi
eval "find /usr/local/lib -name 'libstelephony*' > /dev/null 2>/dev/null"
if [ $? -eq 0 ]; then
eval "find /usr/local/lib -name 'libstelephony*' | xargs rm -f > /dev/null 2>/dev/null"
eval "find /usr/local/include -name 'libstelephony*' | xargs rm -f > /dev/null 2>/dev/null"
fi
eval "find /usr/lib -name 'libsangoma*' > /dev/null 2>/dev/null"
if [ $? -eq 0 ]; then
eval "find /usr/lib -name 'libsangoma*' | xargs rm -f > /dev/null 2>/dev/null"
eval "find /usr/include -name 'libsangoma*' | xargs rm -f > /dev/null 2>/dev/null"
fi
eval "find /usr/lib/lib -name 'libstelephony*' > /dev/null 2>/dev/null"
if [ $? -eq 0 ]; then
eval "find /usr/lib -name 'libstelephony*' | xargs rm -f > /dev/null 2>/dev/null"
eval "find /usr/include -name 'libstelephony*' | xargs rm -f > /dev/null 2>/dev/null"
fi
fi
cd libsangoma
eval "./init-automake.sh >> $CMP_LOG 2>> $CMP_LOG"
eval "./configure --prefix=/usr >> $CMP_LOG 2>> $CMP_LOG"
eval "make clean >> $CMP_LOG 2>> $CMP_LOG"
eval "make CC=$CC SYSINC=$WANPIPE_INCLUDE_DIR >> $CMP_LOG 2>> $CMP_LOG"
if [ $? -eq 0 ]; then
echo -e "Done.\n"
echo -e "Done.\n\n"
else
echo -e "Failed. -- Note this library is not mandatory its safe to continue install \n"
echo -e "Failed. \n\n"
pause
fi
eval "make install DESTDIR=$ROOT >> $CMP_LOG 2>> $CMP_LOG"
cd ..
fi
eval "make install DESTDIR=$ROOT >> $CMP_LOG 2>> $CMP_LOG"
if [ $superuser = "YES" ] && [ -z $ROOT ]; then
eval "ldconfig > /dev/null 2> /dev/null"
fi
echo
echo -n "Compiling WANPIPE API Development Utilities ..."
cd $PROD_HOME/api
if [ -f Makefile ]; then
eval "make CC=$CC SYSINC=$WANPIPE_INCLUDE_DIR >> $CMP_LOG 2>> $CMP_LOG"
if [ $? -eq 0 ]; then
echo -e "Done.\n"
else
echo -e "Failed!\n"
echo -e "\tERROR: Failed to compile WANPIPE API Tools !!!"
echo -e "\t\nPlease contact Sangoma Technologies"
pause
fi
if [ $TDM_VOICE_ONLY = 'YES' ]; then
echo -e "Compiling WANPIPE LibStelephony API Library ... skipped, not required.\n\n"
else
echo "Skiped"
if [ -e libstelephony ]; then
echo -n "Compiling WANPIPE LibStelephony API library ..."
cd libstelephony
eval "./init-automake.sh >> $CMP_LOG 2>> $CMP_LOG"
eval "./configure --prefix=/usr >> $CMP_LOG 2>> $CMP_LOG"
eval "make clean >> $CMP_LOG 2>> $CMP_LOG"
eval "make CC=$CC SYSINC=$WANPIPE_INCLUDE_DIR >> $CMP_LOG 2>> $CMP_LOG"
if [ $? -eq 0 ]; then
echo -e "Done.\n\n"
else
echo -e "Failed. -- Note this library is not mandatory its safe to continue install \n\n"
pause
fi
fi
eval "make install DESTDIR=$ROOT >> $CMP_LOG 2>> $CMP_LOG"
if [ $superuser = "YES" ] && [ -z $ROOT ]; then
eval "ldconfig > /dev/null 2> /dev/null"
fi
fi
if [ $TDM_VOICE_ONLY = 'YES' ]; then
echo -e "Compiling WANPIPE API Development Utilities ... skipped, not required.\n\n"
else
echo -n "Compiling WANPIPE API Development Utilities ..."
cd $PROD_HOME/api
if [ -f Makefile ]; then
eval "make CC=$CC SYSINC=$WANPIPE_INCLUDE_DIR >> $CMP_LOG 2>> $CMP_LOG"
if [ $? -eq 0 ]; then
echo -e "Done.\n"
else
echo -e "Failed!\n"
echo -e "\tERROR: Failed to compile WANPIPE API Tools !!!"
echo -e "\tPlease contact support at Sangoma Technologies"
echo -e "\temail: techdesk@sangoma.com"
echo -e "\tPlease include the file setup_drv_compile.log\n"
pause
fi
else
echo -e "Skipped, no makefile\n"
fi
fi
if [ -d $PROD_HOME/util/wanec_client ] && [ -d $DRIVER_UPDATE_DIR/wanec ] ; then
echo
echo -n "Compiling WANPIPE HWEC Utilities ..."
cd $PROD_HOME/util/wanec_client
eval "make CC=$CC SYSINC=$WANPIPE_INCLUDE_DIR WANEC_DIR=$DRIVER_UPDATE_DIR/wanec >> $CMP_LOG 2>> $CMP_LOG "
if [ $? -eq 0 ]; then
echo -e "Done.\n"
echo -e "Done.\n\n"
else
echo -e "Failed!\n"
echo -e "\tERROR: Failed to compile WANPIPE HWEC Tools !!!"
echo -e "\t\nPlease contact Sangoma Technologies"
echo -e "\tPlease contact support at Sangoma Technologies"
echo -e "\temail: techdesk@sangoma.com"
echo -e "\tPlease include the file setup_drv_compile.log\n"
pause
fi
else
echo
echo -n "WANPIPE HWEC Utilities not installed"
echo
fi
fi
echo -e "\tWANPIPE Environment Setup Complete !!!\n"
pause
return 0
@ -3100,6 +3124,7 @@ if [ -z $NONINTERACTIVE ]; then
enable_protocols $DEFAULT_PROTOCOLS
elif [ "$response" -eq 2 ]; then
TDM_VOICE_ONLY=YES
enable_protocols "TDM"
enable_protocols "AFT_TE1"
LIP_PROT=NO
@ -3295,6 +3320,8 @@ ENDOFTEXT
rm -rf $DRIVER_TMP_DIR
fi
eval "find $PROD_HOME -name \"Module.symvers*\" | xargs \rm -f"
\mkdir "$DRIVER_TMP_DIR"
\mkdir "$DRIVER_TMP_DIR/mod"
\mkdir "$DRIVER_TMP_DIR/tmp"
@ -4391,6 +4418,10 @@ WANPIPE_OBJS=
echo -n "Linking Wanpipe Driver and protocols ..."
#Link in appropriate protocols as needed.
if [ -e $MODSYM ]; then
eval "\rm -f $MODSYM"
fi
if [ "$TDM_PROT" = "YES" ]; then
if [ -f $ZAPTEL_SYM_DIR/$MODSYM ]; then
cat $ZAPTEL_SYM_DIR/$MODSYM >> $MODSYM
@ -4704,9 +4735,11 @@ ENDOFTEXT
function install_chan_woomera()
{
AST_MODULES=chan_woomera.c
if test $NONINTERACTIVE; then
ast_src_dir=/usr/src/asterisk
fi
if [ "$AST_DFLT_INSTALL_DIR" = "" ]; then
ast_src_dir=/usr/src/asterisk
else
ast_src_dir=$AST_DFLT_INSTALL_DIR
fi
cd $PROD_HOME/$SSMG_DIR
cd sangoma_mgd.trunk
@ -5548,18 +5581,18 @@ function tdmv_apply_zaptel_dchan_patch_old ()
}
function tdmv_apply_zaptel_chunk_patch () {
lhome=`pwd`
TEMP=tmp
cd $ZAPTEL_SOURCE_DIR
echo "Applying Zaptel/Dahdi Chunk patch..."
echo " "
lhome=`pwd`
TEMP=tmp
cd $ZAPTEL_SOURCE_DIR
echo "Applying Zaptel/Dahdi Chunk patch..."
echo " "
filetopatch="zaptel.h"
chunkname="ZT_CHUNKSIZE"
dhname="Zaptel"
isdahdi="no"
if [ -f $ZAPTEL_SOURCE_DIR/dahdi/kernel.h ]; then
filetopatch="kernel.h"
filetopatch="$ZAPTEL_SOURCE_DIR/dahdi/$kernel.h"
chunkname="DAHDI_CHUNKSIZE"
dhname="Dahdi"
isdahdi="yes"
@ -5636,20 +5669,31 @@ function tdmv_apply_zaptel_chunk_patch () {
fi
# for zaptel-1.2.26 or later (including Dahdi)
if [ -f Kbuild ]; then
eval "cat Kbuild | sed 's/^obj-m.*+=.*wct4xx.*//g'>$TEMP 2>/dev/null "
eval "cat Kbuild | sed 's/^obj-.*+=.*wct4xx.*//g'>$TEMP 2>/dev/null "
if [ $? -ne 0 ]; then
echo " Failed to remove wct4xxp from Kbuild"
exit 1
else
eval "\mv -f $TEMP Kbuild"
echo " wct4xxp module removed from Kbuild successfully"
zaptel_modified=1
fi
eval "cat Kbuild | sed 's/^obj-.*+=.*wcb4xx.*//g'>$TEMP 2>/dev/null "
if [ $? -ne 0 ]; then
echo " Failed to remove wcb4xxp from Kbuild"
exit 1
else
eval "\mv -f $TEMP Kbuild"
echo " wcb4xxp module removed from Kbuild successfully"
zaptel_modified=1
fi
fi
cd $lhome
return 0;
cd $lhome
return 0;
}
function tdmv_apply_zaptel_echo_debug_patch ()
@ -5934,6 +5978,13 @@ function tdmv_check_zaptel_udev()
echo " UDEV rules not used "
return 0
fi
if [ $DAHDI_SUPPORT = "YES" ]; then
echo " Dahdi installed, no need to add UDEV rules"
return 0
fi
#UDEV rules
if [ ! -f /etc/udev/rules.d/50-udev.rules ]; then
echo " UDEV rules not found/or not used "
@ -6211,7 +6262,7 @@ function find_ast_dirs ()
fi
echo
echo "Looking for Asteris/CallWeaver directory in /usr/src ..."
echo "Looking for Asterisk/CallWeaver directory in /usr/src ..."
echo "-------------------------------------------"
if [ "$astdirs" = "" ]; then
astdirs=`find /usr/src -maxdepth 2 -name 'asterisk*' | xargs `
@ -6654,7 +6705,7 @@ ENDOFTEXT
echo "Enabling the AFT TE1 Support"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_AFT -DCONFIG_PRODUCT_WANPIPE_AFT_CORE -DCONFIG_PRODUCT_WANPIPE_AFT_TE1 -DCONFIG_PRODUCT_WANPIPE_AFT_56K -DCONFIG_PRODUCT_WANPIPE_AFT_RM -DCONFIG_PRODUCT_WANPIPE_CODEC_SLINEAR_LAW -DCONFIG_PRODUCT_WANPIPE_AFT_BRI -DCONFIG_PRODUCT_WANPIPE_AFT_SERIAL -DCONFIG_PRODUCT_WANPIPE_AFT_A600 "
if [ $REL != "3.4" ]; then
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_USB -DCONFIG_PRODUCT_WANPIPE_AFT_A700 "
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_USB -DCONFIG_PRODUCT_WANPIPE_AFT_A700 "
fi
fi
AFT_TE1_PROT=YES
@ -7078,7 +7129,7 @@ function detect_rpm_build_utility()
function compile_aft_firmware_util()
{
lhome=`pwd`
\cp -f $PROD_HOME/util/wan_aftup $PROD_HOME/rpmbuild/etc/wanpipe/firmware/ -r
\cp -rf $PROD_HOME/util/wan_aftup $PROD_HOME/rpmbuild/etc/wanpipe/firmware/
cd $PROD_HOME/rpmbuild/etc/wanpipe/firmware/wan_aftup
echo "Compiling firmware update utilities..."
@ -7150,51 +7201,72 @@ or
optional command extensions:
----------------------------
--silent : Non interactive. Run all above commands
without user interaction. Thus default
environment values are assumed such
as:
--silent : Non interactive. Run all above commands
without user interaction. Thus default
environment values are assumed such
as:
Linux source dir: $SOURCEDIR
Architecture : uname -m
Kernel Image : uname -r
Linux source dir: $SOURCEDIR
Architecture : uname -m
Kernel Image : uname -r
--builddir : Install WANPIPE package into a virtual
directory. The path must be
absolute and must exist. Default is set
to system root( / ).
eg: --builddir=/root/wanpipe_build
--builddir : Install WANPIPE package into a virtual
directory. The path must be
absolute and must exist. Default is set
to system root( / ).
eg: --builddir=/root/wanpipe_build
--with-linux: Build modules using a custom linux
source directory. Default value is
set to $SOURCEDIR
eg: --with-linux=/usr/src/linux-2.4.4
--with-linux : Build modules using a custom linux
source directory. Default value is
set to $SOURCEDIR
eg: --with-linux=/usr/src/linux-2.4.4
--arch : Build modules using a custom defined
architecture. (i686 or i586)
By default: (uname -m)
eg: --arch=i686
--with-zaptel : Build modules using a certain verion of
zaptel or dahdi
eg: --with-zaptel=/usr/src/zaptel-1.4.12
--with-zaptel=/usr/src/dahdi-linux-2.2.0.2
--with-asterisk : Build modules using a certain verions of
Asterisk
eg: --with-asterisk=/usr/src/asterisk-1.6.0.9
--split_rpms: Option to split the rpm build into
util and modules package. Thus,
splitting user space utilities and
kernel modules into two packages.
Default: one rpm package containing
both utilites and modules.
eg: ./Setup buildrpm --split_rpms
--arch : Build modules using a custom defined
architecture. (i686 or i586)
By default: (uname -m)
eg: --arch=i686
--linux-vanilla: Compile wanpipe drivers as if the
current linux source is a vanilla source.
Used to remove the default assumption that
stock distribution kernels pull changes
from higher linux kernel versions.
--split_rpms : Option to split the rpm build into
util and modules package. Thus,
splitting user space utilities and
kernel modules into two packages.
Default: one rpm package containing
both utilites and modules.
eg: ./Setup buildrpm --split_rpms
--no-gcc-debug: Remove -g option out of gcc compile argumetns.
--linux-vanilla : Compile wanpipe drivers as if the
current linux source is a vanilla source.
Used to remove the default assumption that
stock distribution kernels pull changes
from higher linux kernel versions.
--no-gcc-debug : Remove -g option out of gcc compile argumetns.
--noautostart : Do not install start scripts, used to overwrite
the install of these scripts when using --silent
--64bit_4GB : Use this option when installing on systems using
a 64bit kernel and 4GB of RAM or more. Wanpipe
needs to be aware that 64bit memory mapping is
used.
--dahdi-chunk : Use to increase the chunk size of Dahdi.
Drastically improves performance in TDM Voice
See the wiki for more information
--protocol: Option to compile in extra protocols
that are not installed by default.
eg: ./Setup install --protocol=<PROT>
--protocol : Option to compile in extra protocols
that are not installed by default.
eg: ./Setup install --protocol=<PROT>
Extra Protocols Supported:
@ -7255,7 +7327,7 @@ KERNEL_UNAME=`uname -r`
PKG_NAME=wanpipe
DISTR_NAME="WANPIPE"
PROD=wanrouter
PROD_VER=3.4.4
PROD_VER=3.4.5
PROD_HOME=`pwd`
META_CONF=$PROD_HOME/$PROD.rc
WAN_INTR_DIR=$PROD_HOME/interfaces
@ -7305,7 +7377,7 @@ bri_auto_install="NO"
setup_install_quick="NO"
MODSYM=Module.symvers
DEFAULT_KERNEL_VERSION="NO"
TDM_VOICE_ONLY=NO #used to detect whether this is a zaptel/dahdi only install...no API compile then
echo > $CMP_LOG
echo "WANPIPE DRIVER COMPILE LOG" >> $CMP_LOG
@ -7692,6 +7764,25 @@ if [ "$PKG_NAME" != "wanpipe-lite" ]; then
set_zaptel_source_dir
;;
--with-asterisk*)
AST_DFLT_INSTALL_DIR=`echo $arg | cut -d'=' -f2`;
if [ "$AST_DFLT_INSTALL_DIR" = "" ]; then
echo "Error invalid --with-asterisk option";
exit 1;
fi
if [ ! -d "$AST_DFLT_INSTALL_DIR" ]; then
echo "Error: Asterisk source directory not found: $AST_DFLT_INSTALL_DIR";
exit 1;
fi
if [ ! -f "$AST_DFLT_INSTALL_DIR/Makefile" ]; then
echo "Error: Invalid Asterisk source found in $AST_DFLT_INSTALL_DIR";
exit 1;
fi
AST_PATH_OP="YES";
echo "Asterisk path defined as: $AST_DFLT_INSTALL_DIR"
;;
--no-zaptel-compile*)
ZAPTEL_COMPILE_DISABLE="YES";
@ -7770,16 +7861,17 @@ if [ "$PKG_NAME" != "wanpipe-lite" ]; then
--gz-modules)
GZ_MODULES="YES";
;;
--zap-chunk*)
--zap-chunk* | --dahdi-chunk*)
ZAP_CHUNK=`echo $arg | cut -d'=' -f2`;
if [ $ZAP_CHUNK != "8" ] && [ $ZAP_CHUNK != "16" ] && [ $ZAP_CHUNK != "40" ] && [ $ZAP_CHUNK != "80" ]; then
echo "Error: Invalid Zaptel Chunk size"
echo "Error: Invalid Dahdi/Zaptel Chunk size"
exit 1;
else
echo "WARNING: Zaptel custom chunk option is EXPERIMENTAL"
echo "WARNING:"
echo "The wct4xxp module will be removed from your system"
getyn "Do you want to use custom Zaptel chunk size of $ZAP_CHUNK"
getyn "Do you want to use custom Dahdi/Zaptel chunk size of $ZAP_CHUNK"
if [ $? -eq 0 ]; then
ZAP_CHUNK_OP="YES"
else

8208
Setup.old

File diff suppressed because it is too large Load Diff

View File

@ -61,38 +61,9 @@ int wanpipe_hdlc_decode (wanpipe_hdlc_engine_t *hdlc_eng,
unsigned char *buf, int len)
{
int i;
int word_len;
int found=1;
int gotdata=0;
word_len=len-(len%4);
/* Before decoding the packet, make sure that the current
* bit stream contains data. Decoding is very expensive,
* thus perform word (32bit) comparision test */
#if 0
for (i=0;i<word_len;i+=4){
if ((*(unsigned int*)&buf[i]) != *(unsigned int*)buf){
found=1;
break;
}
}
if ((len%4) && !found){
for (i=word_len;i<len;i++){
if (buf[i]!=buf[0]){
found=1;
break;
}
}
}
#endif
/* Data found proceed to decode
* the bitstream and pull out data packets */
if (found){
wanpipe_hdlc_decoder_t *hdlc_decoder = &hdlc_eng->decoder;
for (i=0; i<len; i++){
@ -107,7 +78,6 @@ int wanpipe_hdlc_decode (wanpipe_hdlc_engine_t *hdlc_eng,
hdlc_decoder->stats.frame_overflow++;
init_hdlc_decoder(hdlc_decoder);
}
}
return gotdata;
}

143
api/libsangoma/.cfg_log Normal file
View File

@ -0,0 +1,143 @@
Automake Init Done
Please run
-> ./configure --prefix=/usr
-> make
-> make install
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking build system type... i686-redhat-linux-gnu
checking host system type... i686-redhat-linux-gnu
checking for a sed that does not truncate output... /bin/sed
checking for egrep... grep -E
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for /usr/bin/ld option to reload object files... -r
checking for BSD-compatible nm... /usr/bin/nm -B
checking whether ln -s works... yes
checking how to recognise dependent libraries... pass_all
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking how to run the C++ preprocessor... g++ -E
checking for g77... no
checking for f77... no
checking for xlf... no
checking for frt... no
checking for pgf77... no
checking for fort77... no
checking for fl32... no
checking for af77... no
checking for f90... no
checking for xlf90... no
checking for pgf90... no
checking for epcf90... no
checking for f95... f95
checking whether we are using the GNU Fortran 77 compiler... yes
checking whether f95 accepts -g... yes
checking the maximum length of command line arguments... 32768
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for objdir... .libs
checking for ar... ar
checking for ranlib... ranlib
checking for strip... strip
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC
checking if gcc PIC flag -fPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
configure: creating libtool
appending configuration tag "CXX" to libtool
checking for ld used by g++... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC
checking if g++ PIC flag -fPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
appending configuration tag "F77" to libtool
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for f95 option to produce PIC... -fPIC
checking if f95 PIC flag -fPIC works... yes
checking if f95 static flag -static works... yes
checking if f95 supports -c -o file.o... yes
checking whether the f95 linker (/usr/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for ar... ar
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/ioctl.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for unistd.h... (cached) yes
checking math.h usability... yes
checking math.h presence... yes
checking for math.h... yes
checking whether time.h and sys/time.h may both be included... yes
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking for sys/socket.h... (cached) yes
checking types of arguments for select... int,fd_set *,struct timeval *
checking for gettimeofday... yes
checking for memset... yes
checking for select... yes
checking for socket... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands

51
api/libsangoma/stats.out Normal file
View File

@ -0,0 +1,51 @@
Tue Jul 21 17:44:15 EDT 2009
IF => w1g1 Number of receiver overrun errors: 0
IF => w2g1 Number of receiver overrun errors: 0
IF => w3g1 Number of receiver overrun errors: 0
IF => w4g1 Number of receiver overrun errors: 0
IF => w5g1 Number of receiver overrun errors: 0
IF => w6g1 Number of receiver overrun errors: 0
IF => w7g1 Number of receiver overrun errors: 0
IF => w8g1 Number of receiver overrun errors: 0
IF => w9g1 Number of receiver overrun errors: 0
IF => w10g1 Number of receiver overrun errors: 0
IF => w11g1 Number of receiver overrun errors: 0
IF => w12g1 Number of receiver overrun errors: 0
IF => w13g1 Number of receiver overrun errors: 0
IF => w14g1 Number of receiver overrun errors: 0
IF => w15g1 Number of receiver overrun errors: 0
IF => w16g1 Number of receiver overrun errors: 0
Wed Jul 22 15:50:00 EDT 2009
IF => w1g1 Number of receiver overrun errors: 0
IF => w2g1 Number of receiver overrun errors: 0
IF => w3g1 Number of receiver overrun errors: 0
IF => w4g1 Number of receiver overrun errors: 0
IF => w5g1 Number of receiver overrun errors: 0
IF => w6g1 Number of receiver overrun errors: 0
IF => w7g1 Number of receiver overrun errors: 0
IF => w8g1 Number of receiver overrun errors: 0
IF => w9g1 Number of receiver overrun errors: 0
IF => w10g1 Number of receiver overrun errors: 0
IF => w11g1 Number of receiver overrun errors: 0
IF => w12g1 Number of receiver overrun errors: 0
IF => w13g1 Number of receiver overrun errors: 0
IF => w14g1 Number of receiver overrun errors: 0
IF => w15g1 Number of receiver overrun errors: 0
IF => w16g1 Number of receiver overrun errors: 0
Wed Jul 22 15:50:11 EDT 2009
IF => w1g1 Number of receiver overrun errors: 0
IF => w2g1 Number of receiver overrun errors: 0
IF => w3g1 Number of receiver overrun errors: 0
IF => w4g1 Number of receiver overrun errors: 0
IF => w5g1 Number of receiver overrun errors: 0
IF => w6g1 Number of receiver overrun errors: 0
IF => w7g1 Number of receiver overrun errors: 0
IF => w8g1 Number of receiver overrun errors: 0
IF => w9g1 Number of receiver overrun errors: 0
IF => w10g1 Number of receiver overrun errors: 0
IF => w11g1 Number of receiver overrun errors: 0
IF => w12g1 Number of receiver overrun errors: 0
IF => w13g1 Number of receiver overrun errors: 0
IF => w14g1 Number of receiver overrun errors: 0
IF => w15g1 Number of receiver overrun errors: 0
IF => w16g1 Number of receiver overrun errors: 0

View File

@ -24,6 +24,7 @@ TARGETS += aft_tdm_voice_api_dtmf
TARGETS += aft_tdm_voice_api_rm_events
#TARGETS += aft_tdm_voice_api_rm_dtmf
#TARGETS += aft_tdm_voice_api_rxhook
TARGETS = aft_tdm_hdlc_test
####### RULES ################################################################

View File

@ -284,7 +284,7 @@ void process_con_rx(void)
/* Rx packet recevied OK
* Each rx packet will contain 16 bytes of
* Each rx packet will contain sizeof(wp_tdm_api_tx_hdr_t) bytes of
* rx header, that must be removed. The
* first byte of the 16 byte header will
* indicate an error condition.
@ -451,7 +451,7 @@ void process_con_tx(timeslot_t *slot)
*/
printf("%s: Tx Starting to write on sock %i data (0x%X) f=%x l=%x hdr_sz=%i\n",
slot->if_name,slot->sock,slot->data,Tx_data[16],Tx_data[Tx_hdlc_len+sizeof(wp_tdm_api_tx_hdr_t)-1],
slot->if_name,slot->sock,slot->data,Tx_data[sizeof(wp_tdm_api_tx_hdr_t)],Tx_data[Tx_hdlc_len+sizeof(wp_tdm_api_tx_hdr_t)-1],
sizeof(wp_tdm_api_tx_hdr_t));
@ -479,11 +479,11 @@ void process_con_tx(timeslot_t *slot)
printf("TX DATA ORIG: Len=%i\n",Tx_hdlc_len);
print_packet(&Tx_data[sizeof(wp_tdm_api_tx_hdr_t)],Tx_hdlc_len);
#endif
wanpipe_hdlc_encode(hdlc_eng,&Tx_data[16],Tx_hdlc_len,&Tx_hdlc_data[16],&Tx_encoded_hdlc_len,&next_idle);
wanpipe_hdlc_encode(hdlc_eng,&Tx_data[sizeof(wp_tdm_api_tx_hdr_t)],Tx_hdlc_len,&Tx_hdlc_data[sizeof(wp_tdm_api_tx_hdr_t)],&Tx_encoded_hdlc_len,&next_idle);
if (Tx_encoded_hdlc_len < (max_tx_len*2)){
int j;
for (j=0;j<((max_tx_len*2) - Tx_encoded_hdlc_len);j++){
Tx_hdlc_data[16+Tx_encoded_hdlc_len+j]=next_idle;
Tx_hdlc_data[sizeof(wp_tdm_api_tx_hdr_t)+Tx_encoded_hdlc_len+j]=next_idle;
}
Tx_encoded_hdlc_len+=j;
}
@ -508,7 +508,7 @@ void process_con_tx(timeslot_t *slot)
#if 0
printf("Data %i\n",Tx_hdlc_len);
for (i=0;i<Tx_hdlc_len;i++){
printf(" 0x%X",Tx_hdlc_data[16+i]);
printf(" 0x%X",Tx_hdlc_data[sizeof(wp_tdm_api_tx_hdr_t)+i]);
}
printf("\n");
#endif

85
api/tdmapi/stats.out Normal file
View File

@ -0,0 +1,85 @@
Tue Jul 21 17:45:57 EDT 2009
IF => w1g1 Number of receiver overrun errors: 0
IF => w2g1 Number of receiver overrun errors: 0
IF => w3g1 Number of receiver overrun errors: 0
IF => w4g1 Number of receiver overrun errors: 0
IF => w5g1 Number of receiver overrun errors: 0
IF => w6g1 Number of receiver overrun errors: 0
IF => w7g1 Number of receiver overrun errors: 0
IF => w8g1 Number of receiver overrun errors: 0
IF => w9g1 Number of receiver overrun errors: 0
IF => w10g1 Number of receiver overrun errors: 0
IF => w11g1 Number of receiver overrun errors: 0
IF => w12g1 Number of receiver overrun errors: 0
IF => w13g1 Number of receiver overrun errors: 0
IF => w14g1 Number of receiver overrun errors: 0
IF => w15g1 Number of receiver overrun errors: 0
IF => w16g1 Number of receiver overrun errors: 0
Wed Jul 22 15:52:40 EDT 2009
IF => w1g1 Number of receiver overrun errors: 0
IF => w2g1 Number of receiver overrun errors: 0
IF => w3g1 Number of receiver overrun errors: 0
IF => w4g1 Number of receiver overrun errors: 0
IF => w5g1 Number of receiver overrun errors: 0
IF => w6g1 Number of receiver overrun errors: 0
IF => w7g1 Number of receiver overrun errors: 0
IF => w8g1 Number of receiver overrun errors: 0
IF => w9g1 Number of receiver overrun errors: 1
IF => w10g1 Number of receiver overrun errors: 0
IF => w11g1 Number of receiver overrun errors: 0
IF => w12g1 Number of receiver overrun errors: 0
IF => w13g1 Number of receiver overrun errors: 0
IF => w14g1 Number of receiver overrun errors: 0
IF => w15g1 Number of receiver overrun errors: 1
IF => w16g1 Number of receiver overrun errors: 0
Wed Jul 22 15:52:43 EDT 2009
IF => w1g1 Number of receiver overrun errors: 0
IF => w2g1 Number of receiver overrun errors: 0
IF => w3g1 Number of receiver overrun errors: 0
IF => w4g1 Number of receiver overrun errors: 0
IF => w5g1 Number of receiver overrun errors: 0
IF => w6g1 Number of receiver overrun errors: 0
IF => w7g1 Number of receiver overrun errors: 0
IF => w8g1 Number of receiver overrun errors: 0
IF => w9g1 Number of receiver overrun errors: 0
IF => w10g1 Number of receiver overrun errors: 0
IF => w11g1 Number of receiver overrun errors: 0
IF => w12g1 Number of receiver overrun errors: 0
IF => w13g1 Number of receiver overrun errors: 0
IF => w14g1 Number of receiver overrun errors: 0
IF => w15g1 Number of receiver overrun errors: 0
IF => w16g1 Number of receiver overrun errors: 0
Wed Jul 22 15:53:38 EDT 2009
IF => w1g1 Number of receiver overrun errors: 0
IF => w2g1 Number of receiver overrun errors: 0
IF => w3g1 Number of receiver overrun errors: 0
IF => w4g1 Number of receiver overrun errors: 0
IF => w5g1 Number of receiver overrun errors: 0
IF => w6g1 Number of receiver overrun errors: 0
IF => w7g1 Number of receiver overrun errors: 0
IF => w8g1 Number of receiver overrun errors: 0
IF => w9g1 Number of receiver overrun errors: 0
IF => w10g1 Number of receiver overrun errors: 0
IF => w11g1 Number of receiver overrun errors: 0
IF => w12g1 Number of receiver overrun errors: 0
IF => w13g1 Number of receiver overrun errors: 0
IF => w14g1 Number of receiver overrun errors: 0
IF => w15g1 Number of receiver overrun errors: 0
IF => w16g1 Number of receiver overrun errors: 0
Wed Jul 22 15:54:36 EDT 2009
IF => w1g1 Number of receiver overrun errors: 0
IF => w2g1 Number of receiver overrun errors: 0
IF => w3g1 Number of receiver overrun errors: 0
IF => w4g1 Number of receiver overrun errors: 0
IF => w5g1 Number of receiver overrun errors: 0
IF => w6g1 Number of receiver overrun errors: 0
IF => w7g1 Number of receiver overrun errors: 0
IF => w8g1 Number of receiver overrun errors: 0
IF => w9g1 Number of receiver overrun errors: 0
IF => w10g1 Number of receiver overrun errors: 0
IF => w11g1 Number of receiver overrun errors: 0
IF => w12g1 Number of receiver overrun errors: 0
IF => w13g1 Number of receiver overrun errors: 0
IF => w14g1 Number of receiver overrun errors: 0
IF => w15g1 Number of receiver overrun errors: 0
IF => w16g1 Number of receiver overrun errors: 0

View File

@ -1,5 +1,5 @@
Package: wanpipe
Version: 3.4.4-0
Version: 3.4.5-0
Section: networking
Priority: optional
Architecture: all

View File

@ -95,6 +95,9 @@ static __inline u32 AFT_PORT_REG(sdla_t *card, u32 reg)
#define AFT_WDT_4TO8_CTRL_REG 0x5C
#define AFT_FREE_RUN_TIMER_CTRL_REG 0x98
#define AFT_FREE_RUN_TIMER_PENDING_REG 0x9C
/*=================================================
A104 CHIP CFG REGISTERS
@ -177,6 +180,8 @@ static __inline u32 AFT_PORT_REG(sdla_t *card, u32 reg)
# define AFT_CHIPCFG_P3_WDT_INTR_BIT 20
# define AFT_CHIPCFG_P4_WDT_INTR_BIT 21
# define AFT_CHIPCFG_FREE_RUN_INTR_BIT 20 /* AFT FREE Run timer bit */
# define AFT_CHIPCFG_A108_EC_INTER_STAT_BIT 21 /* A108 */
# define AFT_CHIPCFG_FE_INTR_STAT_BIT 22
@ -843,6 +848,25 @@ aft_dmachain_enable_tdmv_and_mtu_size(u32 *reg, int size)
/*======================================================
* FREE RUNNING TIMER
*
* AFT_FREE_RUN_TIMER_CTRL_REG
*=====================================================*/
#define AFT_FREE_RUN_TIMER_DIVIDER_SHIFT 0
#define AFT_FREE_RUN_TIMER_DIVIDER_MASK 0x3F
#define AFT_FREE_RUN_TIMER_INTER_ENABLE_BIT 7
static __inline void
aft_free_running_timer_ctrl_set(u32 *reg, u32 divider)
{
*reg&=~(AFT_FREE_RUN_TIMER_DIVIDER_MASK<<AFT_FREE_RUN_TIMER_DIVIDER_SHIFT);
*reg|=(divider&AFT_FREE_RUN_TIMER_DIVIDER_MASK)<<AFT_FREE_RUN_TIMER_DIVIDER_SHIFT;
}
/*======================================================
* PER PORT
*
@ -1979,6 +2003,8 @@ typedef struct private_area
unsigned char label[WAN_IF_LABEL_SZ+1];
unsigned char tdm_span_voice_api;
unsigned char tx_seq_char;
unsigned char rx_seq_char;
}private_area_t;
@ -2002,6 +2028,56 @@ aft_tx_dma_chain_chain_len(private_area_t *chan)
return chain_diff;
}
#if defined WANPIPE_PERFORMANCE_DEBUG
#warning "WANPIPE_PERFORMANCE_DEBUG Enabled"
static __inline int aft_calc_elapsed(struct timeval *started, struct timeval *ended)
{
#if 0
return (((ended->tv_sec * 1000) + ended->tv_usec / 1000) -
((started->tv_sec * 1000) + started->tv_usec / 1000));
#else
return ended->tv_usec - started->tv_usec;
#endif
}
static int __inline aft_timing_start(sdla_t * card)
{
#if 1
#if defined(__LINUX__)
do_gettimeofday(&card->timing_tv);
#endif
#endif
return 0;
}
static int __inline aft_timing_stop_calculate_elapsed(sdla_t * card)
{
#if 1
#if defined(__LINUX__)
int elapsed=0;
struct timeval current_tv;
do_gettimeofday(&current_tv);
elapsed=aft_calc_elapsed(&card->timing_tv,&current_tv);
if (elapsed > card->wandev.stats.rx_errors) {
card->wandev.stats.rx_errors=elapsed;
}
if (elapsed > 1000) {
DEBUG_EVENT("%s: Error: Timeout is huge %i\n",card->devname, elapsed);
}
if (card->wandev.stats.rx_errors > 2500) {
card->wandev.stats.rx_errors=0;
}
card->wandev.stats.tx_errors=elapsed;
#endif
#endif
return 0;
}
#endif
void aft_free_logical_channel_num (sdla_t *card, int logic_ch);
void aft_dma_max_logic_ch(sdla_t *card);
void aft_fe_intr_ctrl(sdla_t *card, int status);

View File

@ -158,6 +158,7 @@ typedef struct sdla_remora_cfg_ {
int fxs_ringampl;
unsigned int rm_mode; /*Analog Operation mode: default or tapping */
u_int8_t fake_polarity;
} sdla_remora_cfg_t;
typedef struct {

View File

@ -771,7 +771,8 @@ enum {
AFT_TDM_GLOBAL_ISR,
AFT_TDM_RING_BUF,
AFT_TDM_FAST_ISR,
AFT_TDM_SW_RING_BUF
AFT_TDM_SW_RING_BUF,
AFT_TDM_FREE_RUN_ISR
};
typedef struct
@ -980,11 +981,16 @@ typedef struct sdla
/* SDLA TDMV Dummy interface */
#if defined(CONFIG_PRODUCT_WANPIPE_TDM_VOICE)
void* sdla_tdmv_dummy;
void* sdla_tdmv_dummy;
#endif
unsigned char wp_debug_chan_seq;
#if defined(WANPIPE_PERFORMANCE_DEBUG)
wan_ticks_t debug_timeout;
struct timeval timing_tv;
#endif
} sdla_t;
/****** Public Functions ****************************************************/

View File

@ -6,7 +6,7 @@
#define WANPIPE_COMPANY "Sangoma Technologies Inc"
/********** LINUX **********/
#define WANPIPE_VERSION "3.4.4"
#define WANPIPE_VERSION "3.4.5"
#define WANPIPE_SUB_VERSION "0"
#define WANPIPE_VERSION_BETA 0
#define WANPIPE_LITE_VERSION "1.1.1"

View File

@ -90,6 +90,7 @@
#define ZT_LAW_ALAW DAHDI_LAW_ALAW
#define ZT_LAW_MULAW DAHDI_LAW_MULAW
#define ZT_XLAW DAHDI_XLAW
#define ZT_MAINT_REMOTELOOP DAHDI_MAINT_REMOTELOOP
#define ZT_MAINT_NONE DAHDI_MAINT_NONE

View File

@ -1,7 +1,7 @@
kernel//usr/src/wanpipe-3.4.2.16/patches/kdrivers/src/net/sdladrv.ko
kernel//usr/src/wanpipe-3.4.2.16/patches/kdrivers/src/net/wanrouter.ko
kernel//usr/src/wanpipe-3.4.2.16/patches/kdrivers/src/net/wanpipe.ko
kernel//usr/src/wanpipe-3.4.2.16/patches/kdrivers/src/net/wanpipe_syncppp.ko
kernel//usr/src/wanpipe-3.4.2.16/patches/kdrivers/src/net/af_wanpipe.ko
kernel//usr/src/wanpipe-3.4.2.16/patches/kdrivers/src/net/wanec.ko
kernel//usr/src/wanpipe-3.4.2.16/patches/kdrivers/src/net/wan_aften.ko
kernel//root/development/3.4/wanpipe-3.4.4.1/patches/kdrivers/src/net/sdladrv.ko
kernel//root/development/3.4/wanpipe-3.4.4.1/patches/kdrivers/src/net/wanrouter.ko
kernel//root/development/3.4/wanpipe-3.4.4.1/patches/kdrivers/src/net/wanpipe.ko
kernel//root/development/3.4/wanpipe-3.4.4.1/patches/kdrivers/src/net/wanpipe_syncppp.ko
kernel//root/development/3.4/wanpipe-3.4.4.1/patches/kdrivers/src/net/af_wanpipe.ko
kernel//root/development/3.4/wanpipe-3.4.4.1/patches/kdrivers/src/net/wanec.ko
kernel//root/development/3.4/wanpipe-3.4.4.1/patches/kdrivers/src/net/wan_aften.ko

View File

@ -2620,15 +2620,32 @@ sdla_ds_te1_intr_ctrl(sdla_fe_t *fe, int dummy, u_int8_t type, u_int8_t mode, un
mask |= (BIT_RIM1_RLOSC | BIT_RIM1_RLOSD);
#endif
WRITE_REG(REG_RIM1, mask);
WRITE_REG(REG_RLS1, 0xFF);
/* In-band loop codes */
WRITE_REG(REG_RIM3, BIT_RIM3_T1_LDNC|BIT_RIM3_T1_LUPC|BIT_RIM3_T1_LDND|BIT_RIM3_T1_LUPD);
if (IS_T1_FEMEDIA(fe)){
mask = BIT_RIM3_T1_LDNC|BIT_RIM3_T1_LDND |
BIT_RIM3_T1_LUPC|BIT_RIM3_T1_LUPD;
WRITE_REG(REG_RIM3, mask);
WRITE_REG(REG_RLS3, 0xFF);
}
//WRITE_REG(REG_RIM4, BIT_RIM4_TIMER);
WRITE_REG(REG_RIM7, BIT_RIM7_T1_BC | BIT_RIM7_T1_BD);
WRITE_REG(REG_RLS4, 0xFF);
if (IS_T1_FEMEDIA(fe)){
mask = BIT_RIM7_T1_BC | BIT_RIM7_T1_BD;
/* mask |= BIT_RIM7_T1_RSLC96; */
WRITE_REG(REG_RIM7, mask);
}
WRITE_REG(REG_RLS7, 0xFF);
WRITE_REG(REG_LSIMR,
BIT_LSIMR_OCCIM | BIT_LSIMR_OCDIM |
BIT_LSIMR_SCCIM | BIT_LSIMR_SCCIM |
BIT_LSIMR_LOSCIM | BIT_LSIMR_LOSDIM |
BIT_LSIMR_JALTCIM | BIT_LSIMR_JALTSIM);
WRITE_REG(REG_LLSR, 0xFF);
}else{
WRITE_REG(REG_RIM1, 0x00);
WRITE_REG(REG_RIM2, 0x00);
@ -2690,7 +2707,6 @@ sdla_ds_te1_intr_ctrl(sdla_fe_t *fe, int dummy, u_int8_t type, u_int8_t mode, un
return 0;
}
static int sdla_ds_te1_framer_rx_intr(sdla_fe_t *fe, int silent)
{
unsigned char istatus;
@ -2987,6 +3003,7 @@ static int sdla_ds_te1_framer_tx_intr(sdla_fe_t *fe, int silent)
return 0;
}
static int sdla_ds_te1_bert_intr(sdla_fe_t *fe, int silent)
{
unsigned char blsr = READ_REG(REG_BLSR);
@ -3119,8 +3136,8 @@ static int sdla_ds_te1_check_intr(sdla_fe_t *fe)
//if (framer_istatus & (1 << WAN_FE_LINENO(fe))){
if ((framer_istatus & (1 << WAN_DS_REGBITMAP(fe))) &&
(framer_imask & (1 << WAN_DS_REGBITMAP(fe)))) {
DEBUG_ISR("%s: Interrupt for line %d (FRAMER)\n",
fe->name, WAN_FE_LINENO(fe));
DEBUG_ISR("%s: Interrupt for line %d (FRAMER) status=0x%02X\n",
fe->name, WAN_FE_LINENO(fe),framer_istatus);
return 1;
}
//if (liu_istatus & (1 << WAN_FE_LINENO(fe))){
@ -3137,7 +3154,8 @@ static int sdla_ds_te1_check_intr(sdla_fe_t *fe)
fe->name, WAN_FE_LINENO(fe));
return 1;
}
DEBUG_ISR("%s: This interrupt not for this port %d\n",
DEBUG_TE1("%s: This interrupt not for this port %d\n",
fe->name,
WAN_FE_LINENO(fe)+1);
return 0;

File diff suppressed because it is too large Load Diff

View File

@ -338,7 +338,6 @@ static int wp_tdmv_bri_hwec_create(struct dahdi_chan *chan, struct dahdi_echocan
{
wp_tdmv_bri_t *wr = NULL;
sdla_t *card = NULL;
int fe_chan = chan->chanpos;
int err = -ENODEV;
if (ecp->param_count > 0) {
@ -353,19 +352,19 @@ static int wp_tdmv_bri_hwec_create(struct dahdi_chan *chan, struct dahdi_echocan
WAN_ASSERT2(wr->card == NULL, -ENODEV);
card = wr->card;
*ec = &wr->ec[fe_chan];
*ec = &wr->ec[chan->chanpos-1];
(*ec)->ops = &wp_tdmv_bri_ec_ops;
(*ec)->features = wp_tdmv_bri_ec_features;
if (card->wandev.ec_enable) {
DEBUG_EVENT("[TDMV_BRI]: %s: %s(): channel %d\n",
wr->devname, __FUNCTION__, fe_chan);
wr->devname, __FUNCTION__, chan->chanpos);
if(fe_chan == 1 || fe_chan == 2) {
err = card->wandev.ec_enable(card, 1, fe_chan);
if(chan->chanpos == 1 || chan->chanpos == 2) {
err = card->wandev.ec_enable(card, 1, chan->chanpos);
} else {
DEBUG_EVENT("[TDMV_BRI]: %s: %s(): Warning: invalid fe_channel %d!!\n",
wr->devname, __FUNCTION__, fe_chan);
wr->devname, __FUNCTION__, chan->chanpos);
err = 0;
}
} else {
@ -384,7 +383,6 @@ static void wp_tdmv_bri_hwec_free(struct dahdi_chan *chan, struct dahdi_echocan_
{
wp_tdmv_bri_t *wr = NULL;
sdla_t *card = NULL;
int fe_chan = chan->chanpos;
memset(ec, 0, sizeof(*ec));
@ -396,13 +394,13 @@ static void wp_tdmv_bri_hwec_free(struct dahdi_chan *chan, struct dahdi_echocan_
if (card->wandev.ec_enable) {
DEBUG_EVENT("[TDMV_BRI]: %s: %s(): channel %d\n",
wr->devname, __FUNCTION__, fe_chan);
wr->devname, __FUNCTION__, chan->chanpos);
if(fe_chan == 1 || fe_chan == 2) {
card->wandev.ec_enable(card, 0, fe_chan);
if(chan->chanpos == 1 || chan->chanpos == 2) {
card->wandev.ec_enable(card, 0, chan->chanpos);
} else {
DEBUG_EVENT("[TDMV_BRI]: %s: %s(): Warning: invalid fe_channel %d!!\n",
wr->devname, __FUNCTION__, fe_chan);
wr->devname, __FUNCTION__, chan->chanpos);
}
} else {
DEBUG_EVENT("[TDMV_BRI]: %s: %s(): card->wandev.ec_enable == NULL!!!!!!\n",
@ -420,10 +418,9 @@ static void wp_tdmv_bri_hwec_free(struct dahdi_chan *chan, struct dahdi_echocan_
static int wp_bri_zap_hwec(struct zt_chan *chan, int enable)
{
wp_tdmv_bri_t *wr = NULL;
sdla_t *card = NULL;
int fe_chan = chan->chanpos;
int err = -ENODEV;
sdla_fe_t *fe = NULL;
sdla_t *card = NULL;
int err = -ENODEV;
sdla_fe_t *fe = NULL;
BRI_FUNC();
@ -436,13 +433,13 @@ static int wp_bri_zap_hwec(struct zt_chan *chan, int enable)
if (card->wandev.ec_enable){
DEBUG_EVENT("[TDMV_BRI]: %s: %s(): channel %d\n",
wr->devname, __FUNCTION__, fe_chan);
wr->devname, __FUNCTION__, chan->chanpos);
if(fe_chan == 1 || fe_chan == 2){
err = card->wandev.ec_enable(card, enable, fe_chan);
if(chan->chanpos == 1 || chan->chanpos == 2){
err = card->wandev.ec_enable(card, enable, chan->chanpos);
}else{
DEBUG_EVENT("[TDMV_BRI]: %s: %s(): Warning: invalid fe_channel %d!!\n",
wr->devname, __FUNCTION__, fe_chan);
wr->devname, __FUNCTION__, chan->chanpos);
err = 0;
}
}else{

View File

@ -244,7 +244,7 @@ static int wp_tdmv_remora_rx_chan_sync_test(sdla_t *card, wp_tdmv_remora_t *wr,
#define wp_fax_tone_timeout_set(wr,chan) do { DEBUG_TEST("%s:%d: s%dc%d fax timeout set\n", \
__FUNCTION__,__LINE__, \
wr->spanno+1,chan); \
wr->spanno+1,chan+1); \
wr->ec_fax_detect_timeout[chan]=SYSTEM_TICKS; } while(0);
static int
@ -413,7 +413,7 @@ static int wp_remora_zap_hooksig(struct zt_chan *chan, zt_txsig_t txsig)
wp_tdmv_remora_t *wr = chan->pvt;
sdla_t *card = NULL;
sdla_fe_t *fe = NULL;
int fe_chan = chan->chanpos;
int fe_chan = chan->chanpos-1;
WAN_ASSERT(wr->card == NULL);
card = wr->card;
@ -576,7 +576,6 @@ static int wp_tdmv_remora_hwec_create(struct dahdi_chan *chan, struct dahdi_echo
{
wp_tdmv_remora_t *wr = NULL;
sdla_t *card = NULL;
int fe_chan = chan->chanpos;
int err = -ENODEV;
WAN_ASSERT2(chan == NULL, -ENODEV);
@ -590,11 +589,12 @@ static int wp_tdmv_remora_hwec_create(struct dahdi_chan *chan, struct dahdi_echo
return -EINVAL;
}
*ec = &wr->ec[fe_chan];
*ec = &wr->ec[chan->chanpos-1];
(*ec)->ops = &wp_tdmv_remora_ec_ops;
(*ec)->features = wp_tdmv_remora_ec_features;
wan_set_bit(fe_chan, &card->wandev.rtp_tap_call_map);
wan_set_bit(chan->chanpos-1, &card->wandev.rtp_tap_call_map);
wp_fax_tone_timeout_set(wr,chan->chanpos-1);
if (card->wandev.ec_enable) {
/* The ec persist flag enables and disables
@ -603,12 +603,12 @@ static int wp_tdmv_remora_hwec_create(struct dahdi_chan *chan, struct dahdi_echo
* asterisk. In persist mode off asterisk
* controls hardware echo cancellation */
if (card->hwec_conf.persist_disable) {
err = card->wandev.ec_enable(card, 1, fe_chan);
err = card->wandev.ec_enable(card, 1, chan->chanpos);
} else {
err = 0;
}
DEBUG_TDMV("[TDMV_RM]: %s: Enable HW echo canceller on channel %d\n",
wr->devname, fe_chan);
wr->devname, chan->chanpos);
}
return err;
}
@ -623,7 +623,6 @@ static void wp_tdmv_remora_hwec_free(struct dahdi_chan *chan, struct dahdi_echoc
{
wp_tdmv_remora_t *wr = NULL;
sdla_t *card = NULL;
int fe_chan = chan->chanpos;
memset(ec, 0, sizeof(*ec));
@ -633,7 +632,7 @@ static void wp_tdmv_remora_hwec_free(struct dahdi_chan *chan, struct dahdi_echoc
if(wr->card == NULL) return;
card = wr->card;
wan_clear_bit(fe_chan, &card->wandev.rtp_tap_call_map);
wan_clear_bit(chan->chanpos-1, &card->wandev.rtp_tap_call_map);
if (card->wandev.ec_enable) {
/* The ec persist flag enables and disables
@ -642,10 +641,10 @@ static void wp_tdmv_remora_hwec_free(struct dahdi_chan *chan, struct dahdi_echoc
* asterisk. In persist mode off asterisk
* controls hardware echo cancellation */
if (card->hwec_conf.persist_disable) {
card->wandev.ec_enable(card, 0, fe_chan);
card->wandev.ec_enable(card, 0, chan->chanpos);
}
DEBUG_TDMV("[TDMV] %s: Disable HW echo canceller on channel %d\n",
wr->devname, fe_chan);
wr->devname, chan->chanpos);
}
}
@ -660,7 +659,6 @@ static int wp_remora_zap_hwec(struct zt_chan *chan, int enable)
{
wp_tdmv_remora_t *wr = NULL;
sdla_t *card = NULL;
int fe_chan = chan->chanpos;
int err = -ENODEV;
WAN_ASSERT2(chan == NULL, -ENODEV);
@ -670,9 +668,10 @@ static int wp_remora_zap_hwec(struct zt_chan *chan, int enable)
card = wr->card;
if (enable) {
wan_set_bit(fe_chan,&card->wandev.rtp_tap_call_map);
wan_set_bit(chan->chanpos-1,&card->wandev.rtp_tap_call_map);
wp_fax_tone_timeout_set(wr,chan->chanpos-1);
} else {
wan_clear_bit(fe_chan,&card->wandev.rtp_tap_call_map);
wan_clear_bit(chan->chanpos-1,&card->wandev.rtp_tap_call_map);
}
if (card->wandev.ec_enable){
@ -682,14 +681,14 @@ static int wp_remora_zap_hwec(struct zt_chan *chan, int enable)
* asterisk. In persist mode off asterisk
* controls hardware echo cancellation */
if (card->hwec_conf.persist_disable) {
err = card->wandev.ec_enable(card, enable, fe_chan);
err = card->wandev.ec_enable(card, enable, chan->chanpos);
} else {
err = 0;
}
DEBUG_TDMV("[TDMV_RM]: %s: %s HW echo canceller on channel %d\n",
wr->devname,
(enable) ? "Enable" : "Disable",
fe_chan);
chan->chanpos);
}
return err;
}
@ -1646,8 +1645,6 @@ static int wp_tdmv_remora_is_rbsbits(wan_tdmv_t *wan_tdmv)
}
#ifdef WAN_FAKE_POLARITY
#warning "WAN_FAKE_POLARITY Enabled - Experimental"
static inline void wp_tdmv_dtmfcheck_fakepolarity(wp_tdmv_remora_t *wr, int channo, unsigned char *rxbuf)
{
sdla_t *card = wr->card;
@ -1676,7 +1673,6 @@ static inline void wp_tdmv_dtmfcheck_fakepolarity(wp_tdmv_remora_t *wr, int chan
wr->mod[channo].fxo.readcid = 0;
}
}
#endif
/******************************************************************************
** wp_tdmv_rx_chan() -
@ -1746,9 +1742,9 @@ DEBUG_EVENT("Module %d: RX: %02X %02X %02X %02X %02X %02X %02X %02X\n",
wr->chans[channo].readchunk = rxbuf;
wr->chans[channo].writechunk = txbuf;
#ifdef WAN_FAKE_POLARITY
wp_tdmv_dtmfcheck_fakepolarity(wr,channo,rxbuf);
#endif
if (card->fe.fe_cfg.cfg.remora.fake_polarity == WANOPT_YES){
wp_tdmv_dtmfcheck_fakepolarity(wr,channo,rxbuf);
}
#ifdef CONFIG_PRODUCT_WANPIPE_TDM_VOICE_ECHOMASTER
@ -1990,12 +1986,12 @@ static int wp_tdmv_remora_ec_span(void *pcard)
static void wp_tdmv_remora_dtmf (void* card_id, wan_event_t *event)
{
sdla_t *card = (sdla_t*)card_id;
wan_tdmv_t *wan_tdmv = &card->wan_tdmv;
wp_tdmv_remora_t *wr = NULL;
int fechan = event->channel;
wan_tdmv_t *wan_tdmv = &card->wan_tdmv;
wp_tdmv_remora_t *wr = NULL;
int fechan = event->channel-1;
WAN_ASSERT1(wan_tdmv->sc == NULL);
wr = wan_tdmv->sc;
WAN_ASSERT1(wan_tdmv->sc == NULL);
wr = wan_tdmv->sc;
if (event->type == WAN_EVENT_EC_DTMF){
DEBUG_TDMV(

View File

@ -1472,17 +1472,21 @@ static char *wp_tdmv_sigstr(int sig)
}
#endif
static int wp_tdmv_chanconfig(struct zt_chan *chan, int sigtype)
{
sdla_t *card;
wp_tdmv_softc_t *wp = NULL;
int hdlcsig = sigtype & ~(ZT_SIG_CLEAR);
WAN_ASSERT2(chan == NULL, -ENODEV);
WAN_ASSERT2(chan->pvt == NULL, -ENODEV);
wp = chan->pvt;
card = (sdla_t*)wp->card;
DEBUG_TDMV("%s: Configuring chan %d..\n", wp->devname, chan->chanpos);
DEBUG_TEST("%s: Configuring chan %d (hdlc=%i) flags=0x%02X sigtype=0x%03X..\n",
wp->devname, chan->chanpos, IS_CHAN_HARDHDLC(chan), chan->flags, sigtype);
if (chan->span->flags & ZT_FLAG_RUNNING){
wp_tdmv_set_clear(wp);
}
@ -1498,6 +1502,16 @@ static int wp_tdmv_chanconfig(struct zt_chan *chan, int sigtype)
}
wp_tdmv_sigctrl(card, wp, chan->chanpos, WP_TDMV_ENABLE);
}
/* Disable hwec on signalling channel */
if (wp->hwec == WANOPT_YES && card->wandev.ec_dev && card->wandev.ec_enable) {
if (IS_CHAN_HARDHDLC(chan) || hdlcsig & ZT_SIG_HDLCRAW || hdlcsig & ZT_SIG_HDLCFCS) {
DEBUG_TEST("%s: Disabling EC Chan=%i, sigtype 0x%03X, HDLCRAW=0x%X FCS=0x%X\n",
card->devname, chan->chanpos, sigtype, ZT_SIG_HDLCRAW, ZT_SIG_HDLCFCS);
card->wandev.ec_enable(card, 0, chan->chanpos);
}
}
return 0;
}
@ -1617,18 +1631,22 @@ static int wp_tdmv_rbsbits(struct zt_chan *chan, int bits)
wp_tdmv_softc_t *wp = NULL;
sdla_t *card = NULL;
unsigned char ABCD_bits = 0x00;
wan_smp_flag_t smp_flags;
/* Byte offset */
WAN_ASSERT2(chan == NULL, 0);
if ((wp = chan->pvt) == NULL) return 0;
WAN_ASSERT2(wp->card == NULL, 0);
card = (sdla_t*)wp->card;
if (!wan_test_bit(chan->chanpos-1, &wp->timeslot_map)){
return 0;
}
if (!wan_test_bit(WP_TDMV_SIG_ENABLE, &wp->flags)){
if (!wan_test_bit(WP_TDMV_SIG_ENABLE, &wp->flags)){
return 0;
}
}
if (bits & ZT_ABIT) ABCD_bits |= WAN_RBS_SIG_A;
if (bits & ZT_BBIT) ABCD_bits |= WAN_RBS_SIG_B;
if (bits & ZT_CBIT) ABCD_bits |= WAN_RBS_SIG_C;
@ -1647,41 +1665,16 @@ static int wp_tdmv_rbsbits(struct zt_chan *chan, int bits)
(ABCD_bits & WAN_RBS_SIG_C) ? 1 : 0,
(ABCD_bits & WAN_RBS_SIG_D) ? 1 : 0);
if (wan_test_and_set_bit(chan->chanpos-1, &wp->rbs_tx_status)){
if (ABCD_bits == wp->rbs_tx[chan->chanpos-1]){
return 0;
}
if (wan_test_and_set_bit(chan->chanpos-1, &wp->rbs_tx1_status)){
if (ABCD_bits == wp->rbs_tx1[chan->chanpos-1]){
return 0;
}
DEBUG_EVENT("%s: Critical Error: TX RBS for channel %d\n",
wp->devname,
chan->chanpos);
}
wp->rbs_tx1[chan->chanpos-1] = ABCD_bits;
}else{
wp->rbs_tx[chan->chanpos-1] = ABCD_bits;
}
#if 0
wan_set_bit(7, &ABCD_bits);
if (wan_test_and_set_bit(7, &wp->rbs_tx[chan->chanpos-1])){
if (ABCD_bits == wp->rbs_tx[chan->chanpos-1]){
return 0;
}
if (wan_test_and_set_bit(7, &wp->rbs_tx1[chan->chanpos-1])){
if (ABCD_bits == wp->rbs_tx1[chan->chanpos-1]){
return 0;
}
DEBUG_EVENT("%s: Critical Error: TX RBS for channel %d\n",
wp->devname,
chan->chanpos);
}
wp->rbs_tx1[chan->chanpos-1] = ABCD_bits;
}else{
wp->rbs_tx[chan->chanpos-1] = ABCD_bits;
}
#endif
card->hw_iface.hw_lock(card->hw,&smp_flags);
if (card->wandev.fe_iface.set_rbsbits) {
card->wandev.fe_iface.set_rbsbits(
&wp->card->fe,
chan->chanpos,
ABCD_bits);
}
card->hw_iface.hw_unlock(card->hw,&smp_flags);
return 0;
}
@ -2001,7 +1994,6 @@ static int wp_tdmv_hwec_create(struct dahdi_chan *chan, struct dahdi_echocanpara
{
wp_tdmv_softc_t *wp = NULL;
sdla_t *card = NULL;
int channel=0;
int err = -EINVAL;
if (ecp->param_count > 0) {
@ -2014,19 +2006,13 @@ static int wp_tdmv_hwec_create(struct dahdi_chan *chan, struct dahdi_echocanpara
wp = chan->pvt;
WAN_ASSERT2(wp->card == NULL, -ENODEV);
card = wp->card;
channel = chan->chanpos;
if (!wp->ise1) {
channel--;
}
*ec = &wp->ec[channel];
*ec = &wp->ec[chan->chanpos-1];
(*ec)->ops = &wp_tdmv_ec_ops;
(*ec)->features = wp_tdmv_ec_features;
wan_set_bit(channel, &card->wandev.rtp_tap_call_map);
wp_fax_tone_timeout_set(wp, channel);
wan_set_bit(chan->chanpos-1, &card->wandev.rtp_tap_call_map);
wp_fax_tone_timeout_set(wp, chan->chanpos-1);
if (card->wandev.ec_enable) {
DEBUG_TDMV("[TDMV] %s: Enable HW echo canceller on channel %d\n",
@ -2056,7 +2042,6 @@ static void wp_tdmv_hwec_free(struct dahdi_chan *chan, struct dahdi_echocan_stat
{
wp_tdmv_softc_t *wp = NULL;
sdla_t *card = NULL;
int channel;
memset(ec, 0, sizeof(*ec));
@ -2066,18 +2051,17 @@ static void wp_tdmv_hwec_free(struct dahdi_chan *chan, struct dahdi_echocan_stat
if(wp->card == NULL) return;
card = wp->card;
channel = chan->chanpos;
wan_clear_bit(channel, &card->wandev.rtp_tap_call_map);
wan_clear_bit(chan->chanpos-1, &card->wandev.rtp_tap_call_map);
if (card->wandev.ec_enable) {
DEBUG_TDMV("[TDMV] %s: Disable HW echo canceller on channel %d\n",
wp->devname, channel);
/* The ec persist flag enables and disables
* persistent echo control. In persist mode
* echo cancellation is enabled regardless of
* asterisk. In persist mode off asterisk
* controls hardware echo cancellation */
* persistent echo control. In persist mode
* echo cancellation is enabled regardless of
* asterisk. In persist mode off asterisk
* controls hardware echo cancellation */
if (card->hwec_conf.persist_disable || IS_CHAN_HARDHDLC(chan)) {
card->wandev.ec_enable(card, 0, chan->chanpos);
}
@ -2095,7 +2079,6 @@ static int wp_tdmv_hwec(struct zt_chan *chan, int enable)
{
wp_tdmv_softc_t *wp = NULL;
sdla_t *card = NULL;
int channel;
int err = -EINVAL;
WAN_ASSERT2(chan == NULL, -ENODEV);
@ -2104,16 +2087,11 @@ static int wp_tdmv_hwec(struct zt_chan *chan, int enable)
WAN_ASSERT2(wp->card == NULL, -ENODEV);
card = wp->card;
channel = chan->chanpos;
if (!wp->ise1){
channel--;
}
if (enable) {
wan_set_bit(channel,&card->wandev.rtp_tap_call_map);
wp_fax_tone_timeout_set(wp,channel);
wan_set_bit(chan->chanpos-1,&card->wandev.rtp_tap_call_map);
wp_fax_tone_timeout_set(wp,chan->chanpos-1);
} else {
wan_clear_bit(channel,&card->wandev.rtp_tap_call_map);
wan_clear_bit(chan->chanpos-1,&card->wandev.rtp_tap_call_map);
}
if (card->wandev.ec_enable){
@ -2148,13 +2126,16 @@ static int wp_tdmv_open(struct zt_chan *chan)
{
wp_tdmv_softc_t *wp = NULL;
sdla_t *card = NULL;
wan_smp_flag_t flags;
WAN_ASSERT2(chan == NULL, -ENODEV);
WAN_ASSERT2(chan->pvt == NULL, -ENODEV);
wp = chan->pvt;
WAN_ASSERT2(wp->card == NULL, -ENODEV);
card = wp->card;
wan_spin_lock_irq(&wp->lockirq, &flags);
wp->usecount++;
wan_spin_unlock_irq(&wp->lockirq, &flags);
wanpipe_open(card);
DEBUG_TDMV("%s: Open (usecount=%d, channo=%d, chanpos=%d)...\n",
wp->devname,
@ -2174,13 +2155,16 @@ static int wp_tdmv_close(struct zt_chan *chan)
{
wp_tdmv_softc_t* wp = NULL;
sdla_t *card = NULL;
wan_smp_flag_t flags;
WAN_ASSERT2(chan == NULL, -ENODEV);
WAN_ASSERT2(chan->pvt == NULL, -ENODEV);
wp = chan->pvt;
WAN_ASSERT2(wp->card == NULL, -ENODEV);
card = wp->card;
wan_spin_lock_irq(&wp->lockirq, &flags);
wp->usecount--;
wan_spin_unlock_irq(&wp->lockirq, &flags);
wanpipe_close(card);
DEBUG_TDMV("%s: Close (usecount=%d, channo=%d, chanpos=%d)...\n",
wp->devname,
@ -2535,18 +2519,29 @@ static int wp_tdmv_rx_chan(wan_tdmv_t *wan_tdmv, int channo,
}
#undef AFT_TDM_ROTATE_DEBUG
#ifdef AFT_TDM_ROTATE_DEBUG
static int rotate_debug[32];
#warning "AFT_TDM_ROTATE_DEBUG Enabled"
#include <linux/sdla_aft_te1.h>
#endif
static int wp_tdmv_span_buf_rotate(void *pcard, u32 buf_sz, unsigned long mask, int circ_buf_len)
{
sdla_t *card = (sdla_t*)pcard;
wan_tdmv_t *wan_tdmv = &card->wan_tdmv;
wp_tdmv_softc_t *wp = NULL;
int x;
int tidx;
unsigned int rx_offset, tx_offset;
void *ptr;
WAN_ASSERT(wan_tdmv->sc == NULL);
wp = wan_tdmv->sc;
#ifdef AFT_TDM_ROTATE_DEBUG
rotate_debug[card->tdmv_conf.span_no]++;
#endif
for (x = 0; x < 32; x ++) {
if (wan_test_bit(x,&wp->timeslot_map)) {
@ -2556,30 +2551,66 @@ static int wp_tdmv_span_buf_rotate(void *pcard, u32 buf_sz, unsigned long mask,
continue;
}
rx_offset = buf_sz * card->u.aft.tdm_rx_dma_toggle[x];
tx_offset = buf_sz * card->u.aft.tdm_tx_dma_toggle[x];
card->u.aft.tdm_rx_dma_toggle[x]++;
if (card->u.aft.tdm_rx_dma_toggle[x] >= circ_buf_len) {
card->u.aft.tdm_rx_dma_toggle[x]=0;
if (wp->ise1) {
tidx=x+1;
} else {
tidx=x;
}
card->u.aft.tdm_tx_dma_toggle[x]++;
if (card->u.aft.tdm_tx_dma_toggle[x] >= circ_buf_len) {
card->u.aft.tdm_tx_dma_toggle[x]=0;
#ifdef AFT_TDM_ROTATE_DEBUG
if (1) {
u32 dma_descr, lo_reg, lo_reg_tx, lch;
lch=x;
dma_descr=(lch<<4) +
AFT_PORT_REG(card,AFT_RX_DMA_LO_DESCR_BASE_REG);
card->hw_iface.bus_read_4(card->hw,dma_descr,&lo_reg);
dma_descr=(lch<<4) +
AFT_PORT_REG(card,AFT_TX_DMA_LO_DESCR_BASE_REG);
card->hw_iface.bus_read_4(card->hw,dma_descr,&lo_reg_tx);
lo_reg=(lo_reg&AFT_TDMV_BUF_MASK)/AFT_TDMV_CIRC_BUF;
lo_reg_tx=(lo_reg_tx&AFT_TDMV_BUF_MASK)/AFT_TDMV_CIRC_BUF;
#if 0
if (rotate_debug[card->tdmv_conf.span_no] < 5) {
#else
if (rotate_debug[card->tdmv_conf.span_no] < 5 ||
abs(card->u.aft.tdm_rx_dma_toggle[tidx] - lo_reg) != 2 ||
abs(card->u.aft.tdm_tx_dma_toggle[tidx] - lo_reg_tx) != 2) {
#endif
DEBUG_EVENT("%s: Rotating buffer lch=%i tidx=%i rxdma=%i (hw=%i), txdma=%i (hw=%i)\n",
card->devname, lch, tidx, card->u.aft.tdm_rx_dma_toggle[tidx], lo_reg,card->u.aft.tdm_tx_dma_toggle[tidx],lo_reg_tx);
}
}
#endif
rx_offset = buf_sz * card->u.aft.tdm_rx_dma_toggle[tidx];
tx_offset = buf_sz * card->u.aft.tdm_tx_dma_toggle[tidx];
card->u.aft.tdm_rx_dma_toggle[tidx]++;
if (card->u.aft.tdm_rx_dma_toggle[tidx] >= circ_buf_len) {
card->u.aft.tdm_rx_dma_toggle[tidx]=0;
}
card->u.aft.tdm_tx_dma_toggle[tidx]++;
if (card->u.aft.tdm_tx_dma_toggle[tidx] >= circ_buf_len) {
card->u.aft.tdm_tx_dma_toggle[tidx]=0;
}
wan_spin_lock(&wp->chans[x].lock);
ptr=(void*)((((unsigned long)wp->chans[x].readchunk) & ~(mask)) + rx_offset);
ptr=(void*)((((unsigned long)wp->chans[x].readchunk) & ~(mask)) + rx_offset);
wp->chans[x].readchunk = ptr;
ptr=(void*)((((unsigned long)wp->chans[x].writechunk) & ~(mask)) + tx_offset);
ptr=(void*)((((unsigned long)wp->chans[x].writechunk) & ~(mask)) + tx_offset);
wp->chans[x].writechunk = ptr;
wan_spin_unlock(&wp->chans[x].lock);
#if defined(__LINUX__)
prefetch(wp->chans[x].readchunk);
prefetch(wp->chans[x].writechunk);
prefetch(wp->chans[x].readchunk);
prefetch(wp->chans[x].writechunk);
#endif
if (card->wandev.rtp_len && card->wandev.rtp_tap) {
@ -2667,15 +2698,10 @@ static void wp_tdmv_callback_dtmf (void* card_id, wan_event_t *event)
sdla_t *card = (sdla_t*)card_id;
wan_tdmv_t *wan_tdmv = &card->wan_tdmv;
wp_tdmv_softc_t *wp = NULL;
int fechan = event->channel;
int fechan = event->channel-1;
WAN_ASSERT1(wan_tdmv->sc == NULL);
wp = wan_tdmv->sc;
/* fechan check is a sanity check */
if (!wp->ise1 && fechan > 0){
fechan--;
}
if (event->type != WAN_EVENT_EC_DTMF){
DEBUG_EVENT("ERROR: %s: Invalid event type %X!\n",

View File

@ -1,6 +1,6 @@
%define WANPIPE_VER wanpipe-modules
%define name %{WANPIPE_VER}
%define version 3.4.4
%define version 3.4.5
%define release 0
%define serial 1
%define MODULES_DIR /lib/modules
@ -51,6 +51,26 @@ echo "Wanpipe Modules located in %{MODULES_DIR}/%{KVERSION}"
%changelog
* Tue Aug 18 2009 Nenad Corbic <ncorbic@sangoma.com> - Stable - 3.4.5
=====================================================================
- New firmawre feature for A101/2/5/8: Free Run Timer Interrupt
The AFT T1/E1 cards will now provide perfect timing to zatpel/dahdi
even when the ports are not connected. The free run interrupt
will be enabled when all zaptel/dahdi ports are down, or on
inital card start. To test this feature just start a wanpipe
port with zaptel/dahdi and run zttest.
A108 firmare V38
A104/2/1/ firmware V36
- Added module inc cound when zaptel/dahdi starts.
So wanpipe drivers do not crash if one tries to unload
zaptel/dahdi before stopping wanpipe drivers.
- Dahdi 2.2 Support
- Updated for 2.6.30 kernel
* Fri Jun 17 2009 Nenad Corbic <ncorbic@sangoma.com> - Stable - 3.4.4
=====================================================================

View File

@ -1,7 +1,7 @@
%define KERNEL_VERSION %{?kern_ver}
%define WANPIPE_VER wanpipe-util
%define name %{WANPIPE_VER}
%define version 3.4.4
%define version 3.4.5
%define release 0
%define serial 1
%define ETC_DIR /etc
@ -328,6 +328,26 @@ enable_smg_log;
%changelog
* Tue Aug 18 2009 Nenad Corbic <ncorbic@sangoma.com> - Stable - 3.4.5
=====================================================================
- New firmawre feature for A101/2/5/8: Free Run Timer Interrupt
The AFT T1/E1 cards will now provide perfect timing to zatpel/dahdi
even when the ports are not connected. The free run interrupt
will be enabled when all zaptel/dahdi ports are down, or on
inital card start. To test this feature just start a wanpipe
port with zaptel/dahdi and run zttest.
A108 firmare V38
A104/2/1/ firmware V36
- Added module inc cound when zaptel/dahdi starts.
So wanpipe drivers do not crash if one tries to unload
zaptel/dahdi before stopping wanpipe drivers.
- Dahdi 2.2 Support
- Updated for 2.6.30 kernel
* Fri Jun 17 2009 Nenad Corbic <ncorbic@sangoma.com> - Stable - 3.4.4
=====================================================================

View File

@ -1,7 +1,7 @@
%define KERNEL_VERSION %{?kern_ver}
%define WANPIPE_VER wanpipe
%define name %{WANPIPE_VER}
%define version 3.4.4
%define version 3.4.5
%define release 0
%define serial 1
%define UTILS_DIR /usr/sbin
@ -255,6 +255,26 @@ install_init;
%changelog
* Tue Aug 18 2009 Nenad Corbic <ncorbic@sangoma.com> - Stable - 3.4.5
=====================================================================
- New firmawre feature for A101/2/5/8: Free Run Timer Interrupt
The AFT T1/E1 cards will now provide perfect timing to zatpel/dahdi
even when the ports are not connected. The free run interrupt
will be enabled when all zaptel/dahdi ports are down, or on
inital card start. To test this feature just start a wanpipe
port with zaptel/dahdi and run zttest.
A108 firmare V38
A104/2/1/ firmware V36
- Added module inc cound when zaptel/dahdi starts.
So wanpipe drivers do not crash if one tries to unload
zaptel/dahdi before stopping wanpipe drivers.
- Dahdi 2.2 Support
- Updated for 2.6.30 kernel
* Fri Jun 17 2009 Nenad Corbic <ncorbic@sangoma.com> - Stable - 3.4.4
=====================================================================

View File

@ -2195,7 +2195,7 @@ init_global_params()
{
if [ $OSYSTEM = "Linux" ]; then
ROUTER_VERSION=3.4.4
ROUTER_VERSION=3.4.5
IFCONFIG_LIST=ifconfig
MODULE_STAT=lsmod
WAN_DRIVERS="wanpipe"

View File

@ -1,5 +1,5 @@
#!/bin/sh
make CFLAGS=" -Wp,-MD,.wanpipe.o.d -nostdinc -iwithprefix include -D__LINUX__ -Dlinux -D__KERNEL__ -I/lib/modules/2.6.18-92.1.22.el5/build/include -DMODULE -DAF_WANPIPE_2612_FORCE_UPDATE -DWANPIPE_MOD_266_FORCE_UPDATE -m32 -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Wstrict-prototypes -Wundef -Werror-implicit-function-declaration -Os -pipe -msoft-float -fno-builtin-sprintf -fno-builtin-log2 -fno-builtin-puts -mpreferred-stack-boundary=2 -march=i686 -mtune=generic -mtune=generic -mregparm=3 -ffreestanding -I/lib/modules/2.6.18-92.1.22.el5/build/include/asm-i386/mach-generic -I/lib/modules/2.6.18-92.1.22.el5/build/include/asm-i386/mach-default -fomit-frame-pointer -g -fno-stack-protector -Wdeclaration-after-statement -Wno-pointer-sign -D__KERNEL__ -Iinclude -include include/linux/autoconf.h -I/usr/src/zaptel" PROTOCOL_DEFINES="-DCONFIG_PRODUCT_WANPIPE_BASE -DCONFIG_PRODUCT_WANPIPE_FR -DCONFIG_PRODUCT_WANPIPE_CHDLC -DCONFIG_PRODUCT_WANPIPE_PPP -DCONFIG_PRODUCT_WANPIPE_X25 -DCONFIG_PRODUCT_WANPIPE_ADSL -DCONFIG_PRODUCT_WANPIPE_LIP_ATM -DCONFIG_PRODUCT_WANPIPE_ATM -DCONFIG_PRODUCT_WANPIPE_MULTFR -DCONFIG_PRODUCT_WANPIPE_MULTPROT -DCONFIG_PRODUCT_WANPIPE_AFT -DCONFIG_PRODUCT_WANPIPE_AFT_CORE -DCONFIG_PRODUCT_WANPIPE_AFT_TE1 -DCONFIG_PRODUCT_WANPIPE_AFT_56K -DCONFIG_PRODUCT_WANPIPE_AFT_RM -DCONFIG_PRODUCT_WANPIPE_CODEC_SLINEAR_LAW -DCONFIG_PRODUCT_WANPIPE_AFT_BRI -DCONFIG_PRODUCT_WANPIPE_AFT_SERIAL -DCONFIG_PRODUCT_WANPIPE_AFT_A600 -DCONFIG_PRODUCT_WANPIPE_AFT_TE3 -DCONFIG_PRODUCT_WANPIPE_TDM_VOICE -DCONFIG_PRODUCT_WANPIPE_TDM_VOICE_DCHAN -DCONFIG_PRODUCT_WANPIPE_TDM_VOICE_DCHAN_ZAPTEL -DWANPIPE_USE_I_PRIVATE -DCONFIG_WANPIPE_HWEC "
make CFLAGS=" -Wp,-MD,.wanpipe.o.d -nostdinc -iwithprefix include -D__LINUX__ -Dlinux -D__KERNEL__ -I/lib/modules/2.6.18-92.1.22.el5/build/include -DMODULE -DAF_WANPIPE_2612_FORCE_UPDATE -DWANPIPE_MOD_266_FORCE_UPDATE -m32 -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Wstrict-prototypes -Wundef -Werror-implicit-function-declaration -Os -pipe -msoft-float -fno-builtin-sprintf -fno-builtin-log2 -fno-builtin-puts -mpreferred-stack-boundary=2 -march=i686 -mtune=generic -mtune=generic -mregparm=3 -ffreestanding -I/lib/modules/2.6.18-92.1.22.el5/build/include/asm-i386/mach-generic -I/lib/modules/2.6.18-92.1.22.el5/build/include/asm-i386/mach-default -fomit-frame-pointer -g -fno-stack-protector -Wdeclaration-after-statement -Wno-pointer-sign -D__KERNEL__ -Iinclude -include include/linux/autoconf.h " PROTOCOL_DEFINES="-DCONFIG_PRODUCT_WANPIPE_BASE -DCONFIG_PRODUCT_WANPIPE_XMTP2 -DAFT_XMTP2_API_SUPPORT -I/root/3.4/wanpipe/patches/kdrivers/src/xmtp2km -DCONFIG_PRODUCT_WANPIPE_AFT -DCONFIG_PRODUCT_WANPIPE_AFT_CORE -DCONFIG_PRODUCT_WANPIPE_AFT_TE1 -DCONFIG_PRODUCT_WANPIPE_AFT_56K -DCONFIG_PRODUCT_WANPIPE_AFT_RM -DCONFIG_PRODUCT_WANPIPE_CODEC_SLINEAR_LAW -DCONFIG_PRODUCT_WANPIPE_AFT_BRI -DCONFIG_PRODUCT_WANPIPE_AFT_SERIAL -DCONFIG_PRODUCT_WANPIPE_AFT_A600 -DWANPIPE_USE_I_PRIVATE -DCONFIG_WANPIPE_HWEC "

View File

@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 35
/svn/sangoma_mgd/!svn/ver/187/trunk
/svn/sangoma_mgd/!svn/ver/193/trunk
END
sigboost.h
K 25
@ -9,17 +9,11 @@ svn:wc:ra_dav:version-url
V 46
/svn/sangoma_mgd/!svn/ver/188/trunk/sigboost.h
END
__smg_ctrl_common
switch_buffer.h
K 25
svn:wc:ra_dav:version-url
V 53
/svn/sangoma_mgd/!svn/ver/187/trunk/__smg_ctrl_common
END
sound.raw
K 25
svn:wc:ra_dav:version-url
V 43
/svn/sangoma_mgd/!svn/ver/1/trunk/sound.raw
V 49
/svn/sangoma_mgd/!svn/ver/1/trunk/switch_buffer.h
END
sangoma_mgd.conf.sample
K 25
@ -27,11 +21,17 @@ svn:wc:ra_dav:version-url
V 59
/svn/sangoma_mgd/!svn/ver/157/trunk/sangoma_mgd.conf.sample
END
switch_buffer.h
sound.raw
K 25
svn:wc:ra_dav:version-url
V 49
/svn/sangoma_mgd/!svn/ver/1/trunk/switch_buffer.h
V 43
/svn/sangoma_mgd/!svn/ver/1/trunk/sound.raw
END
__smg_ctrl_common
K 25
svn:wc:ra_dav:version-url
V 53
/svn/sangoma_mgd/!svn/ver/193/trunk/__smg_ctrl_common
END
safe_sangoma
K 25
@ -39,23 +39,17 @@ svn:wc:ra_dav:version-url
V 48
/svn/sangoma_mgd/!svn/ver/174/trunk/safe_sangoma
END
smg_ctrl_pri
K 25
svn:wc:ra_dav:version-url
V 48
/svn/sangoma_mgd/!svn/ver/184/trunk/smg_ctrl_pri
END
callgettest.sh
K 25
svn:wc:ra_dav:version-url
V 48
/svn/sangoma_mgd/!svn/ver/1/trunk/callgettest.sh
END
smg_capabilities.h
smg_ctrl_pri
K 25
svn:wc:ra_dav:version-url
V 54
/svn/sangoma_mgd/!svn/ver/186/trunk/smg_capabilities.h
V 48
/svn/sangoma_mgd/!svn/ver/184/trunk/smg_ctrl_pri
END
ss7box
K 25
@ -63,11 +57,11 @@ svn:wc:ra_dav:version-url
V 40
/svn/sangoma_mgd/!svn/ver/1/trunk/ss7box
END
re-sync.sh
smg_capabilities.h
K 25
svn:wc:ra_dav:version-url
V 45
/svn/sangoma_mgd/!svn/ver/20/trunk/re-sync.sh
V 54
/svn/sangoma_mgd/!svn/ver/186/trunk/smg_capabilities.h
END
call_signal.c
K 25
@ -75,11 +69,23 @@ svn:wc:ra_dav:version-url
V 49
/svn/sangoma_mgd/!svn/ver/186/trunk/call_signal.c
END
re-sync.sh
K 25
svn:wc:ra_dav:version-url
V 45
/svn/sangoma_mgd/!svn/ver/20/trunk/re-sync.sh
END
sangoma_mgd_logger.c
K 25
svn:wc:ra_dav:version-url
V 56
/svn/sangoma_mgd/!svn/ver/186/trunk/sangoma_mgd_logger.c
/svn/sangoma_mgd/!svn/ver/189/trunk/sangoma_mgd_logger.c
END
sangoma_mgd.c
K 25
svn:wc:ra_dav:version-url
V 49
/svn/sangoma_mgd/!svn/ver/193/trunk/sangoma_mgd.c
END
woomera.conf
K 25
@ -87,12 +93,6 @@ svn:wc:ra_dav:version-url
V 46
/svn/sangoma_mgd/!svn/ver/1/trunk/woomera.conf
END
sangoma_mgd.c
K 25
svn:wc:ra_dav:version-url
V 49
/svn/sangoma_mgd/!svn/ver/186/trunk/sangoma_mgd.c
END
call_signal.h
K 25
svn:wc:ra_dav:version-url
@ -115,7 +115,7 @@ sangoma_mgd.h
K 25
svn:wc:ra_dav:version-url
V 49
/svn/sangoma_mgd/!svn/ver/186/trunk/sangoma_mgd.h
/svn/sangoma_mgd/!svn/ver/189/trunk/sangoma_mgd.h
END
q931_cause.h
K 25
@ -157,7 +157,7 @@ sangoma_mgd_common.h
K 25
svn:wc:ra_dav:version-url
V 56
/svn/sangoma_mgd/!svn/ver/105/trunk/sangoma_mgd_common.h
/svn/sangoma_mgd/!svn/ver/189/trunk/sangoma_mgd_common.h
END
switch_buffer.c
K 25
@ -169,7 +169,7 @@ Makefile
K 25
svn:wc:ra_dav:version-url
V 44
/svn/sangoma_mgd/!svn/ver/184/trunk/Makefile
/svn/sangoma_mgd/!svn/ver/192/trunk/Makefile
END
sangoma_mgd_memdbg.h
K 25

View File

@ -1,14 +1,14 @@
8
dir
187
193
https://www.sangomapbx.com/svn/sangoma_mgd/trunk
https://www.sangomapbx.com/svn/sangoma_mgd
2009-07-16T22:05:51.273965Z
187
2009-08-17T22:04:54.377308Z
193
ncorbic
@ -31,7 +31,7 @@ dir
sigboost.h
file
188
@ -74,10 +74,10 @@ file
2009-07-17T14:59:38.000000Z
8ea7bc6e90fa0336337bc6e1a24d0557
2009-07-16T22:05:51.273965Z
187
2009-08-18T17:27:36.000000Z
65a9acd49617d8c8a018c7196dcc4443
2009-08-17T22:04:54.377308Z
193
ncorbic
has-props
@ -214,11 +214,23 @@ file
2009-04-30T20:22:39.000000Z
f413ade50c4afbd2d267f310140b4019
2008-07-25T16:52:12.448857Z
105
ncorbic
2009-08-18T17:27:36.000000Z
3d8959b1ec61651dde9581f2298c1d61
2009-07-24T16:42:00.883153Z
189
davidy
Makefile
file
2009-08-18T17:27:36.000000Z
f65c77a3e5f570fee7081286296d14ea
2009-08-10T15:44:42.284278Z
192
davidy
sangoma_mgd_memdbg.h
file
@ -232,18 +244,6 @@ file
62
ncorbic
Makefile
file
2009-07-14T20:11:42.000000Z
018b18fa2fdf19c1a302c2982eb3b869
2009-07-13T22:25:11.834953Z
184
ncorbic
sound.raw
file
@ -288,10 +288,22 @@ file
2009-07-17T14:59:38.000000Z
d6c82ea9860174d0090e7f8dadd03ed9
2009-07-16T21:35:39.883599Z
186
2009-08-18T17:27:36.000000Z
e37c1c63f8594ae025098e6510327ee0
2009-07-24T16:42:00.883153Z
189
davidy
sangoma_mgd.c
file
2009-08-18T17:27:36.000000Z
96a2446359704f7ef0373f40439328be
2009-08-17T22:04:54.377308Z
193
ncorbic
woomera.conf
@ -306,18 +318,6 @@ file
1
root
sangoma_mgd.c
file
2009-07-17T14:59:38.000000Z
40a0e89163a25c739af3beefe4cd2073
2009-07-16T21:35:39.883599Z
186
ncorbic
list.h
file
@ -336,11 +336,11 @@ file
2009-07-17T14:59:38.000000Z
44395c5b5277ed48910036b82039958b
2009-07-16T21:35:39.883599Z
186
ncorbic
2009-08-18T17:27:36.000000Z
adac2a08453aa9f2077dcb8abc5d7d5b
2009-07-24T16:42:00.883153Z
189
davidy
q931_cause.h
file

View File

@ -30,7 +30,14 @@ ifndef KINSTDIR
endif
CC = gcc
INSTALLPREFIX=
ifndef DESTDIR
ifdef INSTALLPREFIX
DESTDIR=$(INSTALL_PREFIX)
else
DESTDIR=
endif
endif
INCLUDES = -I ../../ssmg/libsangoma.trunk -I. -I ../../patches/kdrivers/include -I ../../patches/kdrivers/wanec/oct6100_api/include -I ../../patches/kdrivers/wanec -I/usr/local/include -I../../patches/kdrivers/include -I/usr/include/wanpipe -Ilib/libteletone/src
@ -69,7 +76,7 @@ endif
all: sangoma_mgd
libs:
$(shell cd lib/libteletone; ./configure --prefix=$(INSTALLPREFIX); cd ../../; )
$(shell cd lib/libteletone; ./configure --prefix=$(DESTDIR); cd ../../; )
$(MAKE) -C lib/libteletone all
switch_buffer.o: switch_buffer.c switch_buffer.h
@ -104,13 +111,13 @@ distclean: clean
install: all install_smg old_cleanup
install_smg: old_cleanup
install -D -m 755 sangoma_mgd $(INSTALLPREFIX)/usr/sbin/sangoma_mgd
@if [ ! -e $(INSTALLPREFIX)/etc/sangoma_mgd.conf ]; then \
install -D -m 755 sangoma_mgd.conf.sample $(INSTALLPREFIX)/etc/sangoma_mgd.conf; \
install -D -m 755 sangoma_mgd $(DESTDIR)/usr/sbin/sangoma_mgd
@if [ ! -e $(DESTDIR)/etc/sangoma_mgd.conf ]; then \
install -D -m 755 sangoma_mgd.conf.sample $(DESTDIR)/etc/sangoma_mgd.conf; \
fi
install -D -m 755 ./safe_sangoma $(INSTALLPREFIX)/usr/sbin/safe_sangoma
install -D -m 755 ./__smg_ctrl_common $(INSTALLPREFIX)/usr/sbin/__smg_ctrl_common
install -D -m 755 ./safe_sangoma $(DESTDIR)/usr/sbin/safe_sangoma
install -D -m 755 ./__smg_ctrl_common $(DESTDIR)/usr/sbin/__smg_ctrl_common
ifeq "${PRI}" "YES"
@echo "PRI control scripts installed"
@ -121,18 +128,18 @@ ifeq "${PRI}" "YES"
else
ifeq "${BRI}" "YES"
@echo "BRI control scripts installed"
@if [ ! -e $(INSTALLPREFIX)/etc/sangoma_mgd.conf ]; then \
install -D -m 755 sangoma_mgd.conf.sample.bri $(INSTALLPREFIX)/etc/sangoma_mgd.conf; \
@if [ ! -e $(DESTDIR)/etc/sangoma_mgd.conf ]; then \
install -D -m 755 sangoma_mgd.conf.sample.bri $(DESTDIR)/etc/sangoma_mgd.conf; \
fi
install -D -m 755 smg_ctrl_bri $(INSTALLPREFIX)/usr/sbin/smg_ctrl
install -D -m 755 smg_ctrl_bri $(DESTDIR)/usr/sbin/smg_ctrl
else
@echo "SS7 control scripts installed"
@if [ ! -e $(INSTALLPREFIX)/etc/sangoma_mgd.conf ]; then \
install -D -m 755 sangoma_mgd.conf.sample.ss7 $(INSTALLPREFIX)/etc/sangoma_mgd.conf; \
@if [ ! -e $(DESTDIR)/etc/sangoma_mgd.conf ]; then \
install -D -m 755 sangoma_mgd.conf.sample.ss7 $(DESTDIR)/etc/sangoma_mgd.conf; \
fi
install -D -m 755 smg_ctrl_ss7 $(INSTALLPREFIX)/usr/sbin/smg_ctrl
install -D -m 755 scripts/init.d/smgss7_init_ctrl $(INSTALLPREFIX)/etc/init.d/smgss7_init_ctrl
install -D -m 755 scripts/init.d/smgss7_init_ctrl $(INSTALLPREFIX)/usr/sbin/smgss7_init_ctrl
install -D -m 755 smg_ctrl_ss7 $(DESTDIR)/usr/sbin/smg_ctrl
install -D -m 755 scripts/init.d/smgss7_init_ctrl $(DESTDIR)/etc/init.d/smgss7_init_ctrl
install -D -m 755 scripts/init.d/smgss7_init_ctrl $(DESTDIR)/usr/sbin/smgss7_init_ctrl
endif
endif
@ -145,7 +152,7 @@ old_cleanup:
install_all: all install_smg
uninstall:
/bin/rm $(INSTALLPREFIX)/usr/sbin/sangoma_mgd $(INSTALLPREFIX)/etc/sangoma_mgd.conf
/bin/rm $(DESTDIR)/usr/sbin/sangoma_mgd $(DESTDIR)/etc/sangoma_mgd.conf

View File

@ -453,7 +453,7 @@ function show_calls()
check_pid_sigd
eval "kill -SIGRTMIN+3 $(pidof $sigd) "
rc=$?
if [ $rc-eq 0 ]; then
if [ $rc -eq 0 ]; then
echo "BRI: Show calls"
else
echo "BRI: Failed to send command"

View File

@ -9,6 +9,11 @@
*
* =============================================
*
*
* v1.51 David Yat Sin <dyatsin@sangoma.com>
* MAX_SPANS increased to 32.
* Fix for server.process_table declared incorrectly
*
* v1.50 Nenad Corbic <ncorbic@sangoma.com>
* Logic to support multiple woomera clients hanging up the
* channel. This feature now supprorts woomera loadbalancing
@ -291,7 +296,7 @@ struct woomera_server server;
#endif
#define SMG_VERSION "v1.50"
#define SMG_VERSION "v1.51"
/* enable early media */
#if 1
@ -333,7 +338,7 @@ static int drop_seq=0;
const char WELCOME_TEXT[] =
"================================================================================\n"
"Sangoma Media Gateway Daemon v1.50 \n"
"Sangoma Media Gateway Daemon v1.51 \n"
"\n"
"TDM Signal Media Gateway for Sangoma/Wanpipe Cards\n"
"Copyright 2005, 2006, 2007 \n"
@ -2137,7 +2142,7 @@ static struct woomera_interface * launch_woomera_loop_thread(short_signal_event_
pthread_mutex_lock(&server.process_lock);
server.process_table[event->span][event->chan].dev = NULL;
memset(server.process_table[event->span][event->chan].session,0,SMG_SESSION_NAME_SZ);
pthread_mutex_unlock(&server.process_lock);
pthread_mutex_unlock(&server.process_lock);
smg_free(woomera);
log_printf(SMG_LOG_ALL, server.log, "Critical ERROR: memory/socket error\n");
return NULL;
@ -4071,11 +4076,12 @@ static void handle_remove_loop(short_signal_event_t *event)
static void handle_call_stop(short_signal_event_t *event)
{
struct woomera_interface *woomera;
struct woomera_interface *woomera;
int ack=0;
pthread_mutex_lock(&server.process_lock);
woomera = server.process_table[event->span][event->chan].dev;
woomera = NULL;
pthread_mutex_lock(&server.process_lock);
woomera = server.process_table[event->span][event->chan].dev;
if (woomera) {
if (!woomera_test_flag(woomera, WFLAG_WAIT_FOR_NACK_ACK_SENT) &&
@ -4094,7 +4100,7 @@ static void handle_call_stop(short_signal_event_t *event)
memset(server.process_table[event->span][event->chan].session,0,SMG_SESSION_NAME_SZ);
pthread_mutex_unlock(&server.process_lock);
if (woomera) {
if (woomera) {
woomera_set_cause_topbx(woomera,event->release_cause);
@ -5740,8 +5746,13 @@ static int woomera_shutdown(void)
int main(int argc, char *argv[])
{
int ret = 0;
memset(&server,0,sizeof(server));
memset(&woomera_dead_dev,0,sizeof(woomera_dead_dev));
mlockall(MCL_FUTURE);
memset(&server, 0, sizeof(server));
memset(&woomera_dead_dev, 0, sizeof(woomera_dead_dev));
ret=nice(-5);

View File

@ -298,7 +298,8 @@ struct woomera_session {
#define CORE_TANK_LEN CORE_MAX_CHAN_PER_SPAN*CORE_MAX_SPANS
struct woomera_server {
struct woomera_session process_table[CORE_MAX_CHAN_PER_SPAN][CORE_MAX_SPANS];
// struct woomera_session process_table[CORE_MAX_CHAN_PER_SPAN][CORE_MAX_SPANS];
struct woomera_session process_table[CORE_MAX_SPANS][CORE_MAX_CHAN_PER_SPAN];
struct woomera_interface *holding_tank[CORE_TANK_LEN];
int holding_tank_index;
struct woomera_interface master_connection;

View File

@ -3,10 +3,10 @@
#define __SMG_COMMON_H_
#define WOOMERA_MAX_SPAN 24
#define WOOMERA_MAX_SPAN 32
#define WOOMERA_MAX_CHAN 31
#define WOOMERA_BRI_MAX_SPAN 24
#define WOOMERA_BRI_MAX_SPAN 32
#define WOOMERA_BRI_MAX_CHAN 2
extern int max_spans;

View File

@ -49,7 +49,7 @@ void __log_printf(int level, FILE *fp, char *file, const char *func, int line, c
fp = server.log;
}
if (level && level >= server.debug && level < 100) {
if (level && level > server.debug && level < 100) {
return;
}

View File

@ -30,7 +30,14 @@ ifndef KINSTDIR
endif
CC = gcc
INSTALLPREFIX=
ifndef DESTDIR
ifdef INSTALLPREFIX
DESTDIR=$(INSTALL_PREFIX)
else
DESTDIR=
endif
endif
INCLUDES = -I ../../ssmg/libsangoma.trunk -I. -I ../../patches/kdrivers/include -I ../../patches/kdrivers/wanec/oct6100_api/include -I ../../patches/kdrivers/wanec -I/usr/local/include -I../../patches/kdrivers/include -I/usr/include/wanpipe -Ilib/libteletone/src
@ -69,7 +76,7 @@ endif
all: sangoma_mgd
libs:
$(shell cd lib/libteletone; ./configure --prefix=$(INSTALLPREFIX); cd ../../; )
$(shell cd lib/libteletone; ./configure --prefix=$(DESTDIR); cd ../../; )
$(MAKE) -C lib/libteletone all
switch_buffer.o: switch_buffer.c switch_buffer.h
@ -104,13 +111,13 @@ distclean: clean
install: all install_smg old_cleanup
install_smg: old_cleanup
install -D -m 755 sangoma_mgd $(INSTALLPREFIX)/usr/sbin/sangoma_mgd
@if [ ! -e $(INSTALLPREFIX)/etc/sangoma_mgd.conf ]; then \
install -D -m 755 sangoma_mgd.conf.sample $(INSTALLPREFIX)/etc/sangoma_mgd.conf; \
install -D -m 755 sangoma_mgd $(DESTDIR)/usr/sbin/sangoma_mgd
@if [ ! -e $(DESTDIR)/etc/sangoma_mgd.conf ]; then \
install -D -m 755 sangoma_mgd.conf.sample $(DESTDIR)/etc/sangoma_mgd.conf; \
fi
install -D -m 755 ./safe_sangoma $(INSTALLPREFIX)/usr/sbin/safe_sangoma
install -D -m 755 ./__smg_ctrl_common $(INSTALLPREFIX)/usr/sbin/__smg_ctrl_common
install -D -m 755 ./safe_sangoma $(DESTDIR)/usr/sbin/safe_sangoma
install -D -m 755 ./__smg_ctrl_common $(DESTDIR)/usr/sbin/__smg_ctrl_common
ifeq "${PRI}" "YES"
@echo "PRI control scripts installed"
@ -121,18 +128,18 @@ ifeq "${PRI}" "YES"
else
ifeq "${BRI}" "YES"
@echo "BRI control scripts installed"
@if [ ! -e $(INSTALLPREFIX)/etc/sangoma_mgd.conf ]; then \
install -D -m 755 sangoma_mgd.conf.sample.bri $(INSTALLPREFIX)/etc/sangoma_mgd.conf; \
@if [ ! -e $(DESTDIR)/etc/sangoma_mgd.conf ]; then \
install -D -m 755 sangoma_mgd.conf.sample.bri $(DESTDIR)/etc/sangoma_mgd.conf; \
fi
install -D -m 755 smg_ctrl_bri $(INSTALLPREFIX)/usr/sbin/smg_ctrl
install -D -m 755 smg_ctrl_bri $(DESTDIR)/usr/sbin/smg_ctrl
else
@echo "SS7 control scripts installed"
@if [ ! -e $(INSTALLPREFIX)/etc/sangoma_mgd.conf ]; then \
install -D -m 755 sangoma_mgd.conf.sample.ss7 $(INSTALLPREFIX)/etc/sangoma_mgd.conf; \
@if [ ! -e $(DESTDIR)/etc/sangoma_mgd.conf ]; then \
install -D -m 755 sangoma_mgd.conf.sample.ss7 $(DESTDIR)/etc/sangoma_mgd.conf; \
fi
install -D -m 755 smg_ctrl_ss7 $(INSTALLPREFIX)/usr/sbin/smg_ctrl
install -D -m 755 scripts/init.d/smgss7_init_ctrl $(INSTALLPREFIX)/etc/init.d/smgss7_init_ctrl
install -D -m 755 scripts/init.d/smgss7_init_ctrl $(INSTALLPREFIX)/usr/sbin/smgss7_init_ctrl
install -D -m 755 smg_ctrl_ss7 $(DESTDIR)/usr/sbin/smg_ctrl
install -D -m 755 scripts/init.d/smgss7_init_ctrl $(DESTDIR)/etc/init.d/smgss7_init_ctrl
install -D -m 755 scripts/init.d/smgss7_init_ctrl $(DESTDIR)/usr/sbin/smgss7_init_ctrl
endif
endif
@ -145,7 +152,7 @@ old_cleanup:
install_all: all install_smg
uninstall:
/bin/rm $(INSTALLPREFIX)/usr/sbin/sangoma_mgd $(INSTALLPREFIX)/etc/sangoma_mgd.conf
/bin/rm $(DESTDIR)/usr/sbin/sangoma_mgd $(DESTDIR)/etc/sangoma_mgd.conf

View File

@ -453,7 +453,7 @@ function show_calls()
check_pid_sigd
eval "kill -SIGRTMIN+3 $(pidof $sigd) "
rc=$?
if [ $rc-eq 0 ]; then
if [ $rc -eq 0 ]; then
echo "BRI: Show calls"
else
echo "BRI: Failed to send command"

View File

@ -1,7 +1,7 @@
8
dir
187
193
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/app
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -1,7 +1,7 @@
8
dir
187
193
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/conf
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -1,7 +1,7 @@
8
dir
187
193
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/conf_bri
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -1,5 +1,5 @@
K 25
svn:wc:ra_dav:version-url
V 39
/svn/sangoma_mgd/!svn/ver/149/trunk/lib
/svn/sangoma_mgd/!svn/ver/190/trunk/lib
END

View File

@ -1,14 +1,14 @@
8
dir
187
193
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/lib
https://www.sangomapbx.com/svn/sangoma_mgd
2009-03-03T20:17:37.440465Z
149
2009-07-27T20:06:20.593649Z
190
davidy

View File

@ -1,17 +0,0 @@
K 25
svn:wc:ra_dav:version-url
V 57
/svn/sangoma_mgd/!svn/ver/102/trunk/lib/libteletone/.deps
END
libteletone_la-libteletone_detect.Plo
K 25
svn:wc:ra_dav:version-url
V 95
/svn/sangoma_mgd/!svn/ver/102/trunk/lib/libteletone/.deps/libteletone_la-libteletone_detect.Plo
END
libteletone_la-libteletone_generate.Plo
K 25
svn:wc:ra_dav:version-url
V 97
/svn/sangoma_mgd/!svn/ver/102/trunk/lib/libteletone/.deps/libteletone_la-libteletone_generate.Plo
END

View File

@ -1,52 +0,0 @@
8
dir
187
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/lib/libteletone/.deps
https://www.sangomapbx.com/svn/sangoma_mgd
2008-07-25T16:12:13.826864Z
102
ncorbic
svn:special svn:externals svn:needs-lock
27f70977-ab3a-0410-9ff6-8a87bf49d3db
libteletone_la-libteletone_detect.Plo
file
2009-06-16T20:18:46.000000Z
866ad37f0012aa596611f955bd7be8c2
2008-07-25T16:12:13.826864Z
102
ncorbic
libteletone_la-libteletone_generate.Plo
file
2009-06-16T20:18:46.000000Z
a4d2e5ac183ccde08b85bf8fe2eafcfe
2008-07-25T16:12:13.826864Z
102
ncorbic

View File

@ -1,158 +0,0 @@
libteletone_la-libteletone_detect.lo libteletone_la-libteletone_detect.o: \
src/libteletone_detect.c ./src/libteletone_detect.h ./src/libteletone.h \
./src/libteletone_generate.h /usr/include/stdio.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/gnu/stubs.h \
/usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h \
/usr/include/bits/types.h /usr/include/bits/wordsize.h \
/usr/include/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \
/usr/include/gconv.h \
/usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/stdlib.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \
/usr/include/bits/select.h /usr/include/bits/sigset.h \
/usr/include/bits/time.h /usr/include/sys/sysmacros.h \
/usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \
/usr/include/alloca.h /usr/include/stdint.h /usr/include/sys/stat.h \
/usr/include/bits/stat.h /usr/include/fcntl.h /usr/include/bits/fcntl.h \
/usr/include/math.h /usr/include/bits/huge_val.h \
/usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \
/usr/include/bits/inf.h /usr/include/bits/nan.h \
/usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \
/usr/include/bits/mathinline.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/errno.h /usr/include/bits/errno.h \
/usr/include/linux/errno.h /usr/include/asm/errno.h \
/usr/include/unistd.h /usr/include/bits/posix_opt.h \
/usr/include/bits/environments.h /usr/include/bits/confname.h \
/usr/include/getopt.h /usr/include/assert.h
./src/libteletone_detect.h:
./src/libteletone.h:
./src/libteletone_generate.h:
/usr/include/stdio.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/gnu/stubs.h:
/usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h:
/usr/include/bits/types.h:
/usr/include/bits/wordsize.h:
/usr/include/bits/typesizes.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/include/bits/wchar.h:
/usr/include/gconv.h:
/usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/stdlib.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/bits/sched.h:
/usr/include/alloca.h:
/usr/include/stdint.h:
/usr/include/sys/stat.h:
/usr/include/bits/stat.h:
/usr/include/fcntl.h:
/usr/include/bits/fcntl.h:
/usr/include/math.h:
/usr/include/bits/huge_val.h:
/usr/include/bits/huge_valf.h:
/usr/include/bits/huge_vall.h:
/usr/include/bits/inf.h:
/usr/include/bits/nan.h:
/usr/include/bits/mathdef.h:
/usr/include/bits/mathcalls.h:
/usr/include/bits/mathinline.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/errno.h:
/usr/include/bits/errno.h:
/usr/include/linux/errno.h:
/usr/include/asm/errno.h:
/usr/include/unistd.h:
/usr/include/bits/posix_opt.h:
/usr/include/bits/environments.h:
/usr/include/bits/confname.h:
/usr/include/getopt.h:
/usr/include/assert.h:

View File

@ -1,158 +0,0 @@
libteletone_la-libteletone_generate.lo \
libteletone_la-libteletone_generate.o: src/libteletone_generate.c \
./src/libteletone.h ./src/libteletone_generate.h /usr/include/stdio.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/gnu/stubs.h \
/usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h \
/usr/include/bits/types.h /usr/include/bits/wordsize.h \
/usr/include/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \
/usr/include/gconv.h \
/usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/stdlib.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \
/usr/include/bits/select.h /usr/include/bits/sigset.h \
/usr/include/bits/time.h /usr/include/sys/sysmacros.h \
/usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \
/usr/include/alloca.h /usr/include/stdint.h /usr/include/sys/stat.h \
/usr/include/bits/stat.h /usr/include/fcntl.h /usr/include/bits/fcntl.h \
/usr/include/math.h /usr/include/bits/huge_val.h \
/usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \
/usr/include/bits/inf.h /usr/include/bits/nan.h \
/usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \
/usr/include/bits/mathinline.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/errno.h /usr/include/bits/errno.h \
/usr/include/linux/errno.h /usr/include/asm/errno.h \
/usr/include/unistd.h /usr/include/bits/posix_opt.h \
/usr/include/bits/environments.h /usr/include/bits/confname.h \
/usr/include/getopt.h /usr/include/assert.h ./src/libteletone_detect.h
./src/libteletone.h:
./src/libteletone_generate.h:
/usr/include/stdio.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/gnu/stubs.h:
/usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h:
/usr/include/bits/types.h:
/usr/include/bits/wordsize.h:
/usr/include/bits/typesizes.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/include/bits/wchar.h:
/usr/include/gconv.h:
/usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/stdlib.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/bits/sched.h:
/usr/include/alloca.h:
/usr/include/stdint.h:
/usr/include/sys/stat.h:
/usr/include/bits/stat.h:
/usr/include/fcntl.h:
/usr/include/bits/fcntl.h:
/usr/include/math.h:
/usr/include/bits/huge_val.h:
/usr/include/bits/huge_valf.h:
/usr/include/bits/huge_vall.h:
/usr/include/bits/inf.h:
/usr/include/bits/nan.h:
/usr/include/bits/mathdef.h:
/usr/include/bits/mathcalls.h:
/usr/include/bits/mathinline.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/errno.h:
/usr/include/bits/errno.h:
/usr/include/linux/errno.h:
/usr/include/asm/errno.h:
/usr/include/unistd.h:
/usr/include/bits/posix_opt.h:
/usr/include/bits/environments.h:
/usr/include/bits/confname.h:
/usr/include/getopt.h:
/usr/include/assert.h:
./src/libteletone_detect.h:

View File

@ -1,158 +0,0 @@
libteletone_la-libteletone_detect.lo libteletone_la-libteletone_detect.o: \
src/libteletone_detect.c ./src/libteletone_detect.h ./src/libteletone.h \
./src/libteletone_generate.h /usr/include/stdio.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/gnu/stubs.h \
/usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h \
/usr/include/bits/types.h /usr/include/bits/wordsize.h \
/usr/include/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \
/usr/include/gconv.h \
/usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/stdlib.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \
/usr/include/bits/select.h /usr/include/bits/sigset.h \
/usr/include/bits/time.h /usr/include/sys/sysmacros.h \
/usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \
/usr/include/alloca.h /usr/include/stdint.h /usr/include/sys/stat.h \
/usr/include/bits/stat.h /usr/include/fcntl.h /usr/include/bits/fcntl.h \
/usr/include/math.h /usr/include/bits/huge_val.h \
/usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \
/usr/include/bits/inf.h /usr/include/bits/nan.h \
/usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \
/usr/include/bits/mathinline.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/errno.h /usr/include/bits/errno.h \
/usr/include/linux/errno.h /usr/include/asm/errno.h \
/usr/include/unistd.h /usr/include/bits/posix_opt.h \
/usr/include/bits/environments.h /usr/include/bits/confname.h \
/usr/include/getopt.h /usr/include/assert.h
./src/libteletone_detect.h:
./src/libteletone.h:
./src/libteletone_generate.h:
/usr/include/stdio.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/gnu/stubs.h:
/usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h:
/usr/include/bits/types.h:
/usr/include/bits/wordsize.h:
/usr/include/bits/typesizes.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/include/bits/wchar.h:
/usr/include/gconv.h:
/usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/stdlib.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/bits/sched.h:
/usr/include/alloca.h:
/usr/include/stdint.h:
/usr/include/sys/stat.h:
/usr/include/bits/stat.h:
/usr/include/fcntl.h:
/usr/include/bits/fcntl.h:
/usr/include/math.h:
/usr/include/bits/huge_val.h:
/usr/include/bits/huge_valf.h:
/usr/include/bits/huge_vall.h:
/usr/include/bits/inf.h:
/usr/include/bits/nan.h:
/usr/include/bits/mathdef.h:
/usr/include/bits/mathcalls.h:
/usr/include/bits/mathinline.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/errno.h:
/usr/include/bits/errno.h:
/usr/include/linux/errno.h:
/usr/include/asm/errno.h:
/usr/include/unistd.h:
/usr/include/bits/posix_opt.h:
/usr/include/bits/environments.h:
/usr/include/bits/confname.h:
/usr/include/getopt.h:
/usr/include/assert.h:

View File

@ -1,158 +0,0 @@
libteletone_la-libteletone_generate.lo \
libteletone_la-libteletone_generate.o: src/libteletone_generate.c \
./src/libteletone.h ./src/libteletone_generate.h /usr/include/stdio.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/gnu/stubs.h \
/usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h \
/usr/include/bits/types.h /usr/include/bits/wordsize.h \
/usr/include/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \
/usr/include/gconv.h \
/usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/stdlib.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \
/usr/include/bits/select.h /usr/include/bits/sigset.h \
/usr/include/bits/time.h /usr/include/sys/sysmacros.h \
/usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \
/usr/include/alloca.h /usr/include/stdint.h /usr/include/sys/stat.h \
/usr/include/bits/stat.h /usr/include/fcntl.h /usr/include/bits/fcntl.h \
/usr/include/math.h /usr/include/bits/huge_val.h \
/usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \
/usr/include/bits/inf.h /usr/include/bits/nan.h \
/usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \
/usr/include/bits/mathinline.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/errno.h /usr/include/bits/errno.h \
/usr/include/linux/errno.h /usr/include/asm/errno.h \
/usr/include/unistd.h /usr/include/bits/posix_opt.h \
/usr/include/bits/environments.h /usr/include/bits/confname.h \
/usr/include/getopt.h /usr/include/assert.h ./src/libteletone_detect.h
./src/libteletone.h:
./src/libteletone_generate.h:
/usr/include/stdio.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/gnu/stubs.h:
/usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h:
/usr/include/bits/types.h:
/usr/include/bits/wordsize.h:
/usr/include/bits/typesizes.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/include/bits/wchar.h:
/usr/include/gconv.h:
/usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/stdlib.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/bits/sched.h:
/usr/include/alloca.h:
/usr/include/stdint.h:
/usr/include/sys/stat.h:
/usr/include/bits/stat.h:
/usr/include/fcntl.h:
/usr/include/bits/fcntl.h:
/usr/include/math.h:
/usr/include/bits/huge_val.h:
/usr/include/bits/huge_valf.h:
/usr/include/bits/huge_vall.h:
/usr/include/bits/inf.h:
/usr/include/bits/nan.h:
/usr/include/bits/mathdef.h:
/usr/include/bits/mathcalls.h:
/usr/include/bits/mathinline.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/errno.h:
/usr/include/bits/errno.h:
/usr/include/linux/errno.h:
/usr/include/asm/errno.h:
/usr/include/unistd.h:
/usr/include/bits/posix_opt.h:
/usr/include/bits/environments.h:
/usr/include/bits/confname.h:
/usr/include/getopt.h:
/usr/include/assert.h:
./src/libteletone_detect.h:

View File

@ -1,7 +1,7 @@
K 25
svn:wc:ra_dav:version-url
V 51
/svn/sangoma_mgd/!svn/ver/149/trunk/lib/libteletone
/svn/sangoma_mgd/!svn/ver/190/trunk/lib/libteletone
END
mkinstalldirs
K 25
@ -33,18 +33,18 @@ svn:wc:ra_dav:version-url
V 62
/svn/sangoma_mgd/!svn/ver/1/trunk/lib/libteletone/configure.in
END
ChangeLog
K 25
svn:wc:ra_dav:version-url
V 59
/svn/sangoma_mgd/!svn/ver/1/trunk/lib/libteletone/ChangeLog
END
depcomp
K 25
svn:wc:ra_dav:version-url
V 57
/svn/sangoma_mgd/!svn/ver/1/trunk/lib/libteletone/depcomp
END
ChangeLog
K 25
svn:wc:ra_dav:version-url
V 59
/svn/sangoma_mgd/!svn/ver/1/trunk/lib/libteletone/ChangeLog
END
compile
K 25
svn:wc:ra_dav:version-url
@ -63,11 +63,11 @@ svn:wc:ra_dav:version-url
V 64
/svn/sangoma_mgd/!svn/ver/1/trunk/lib/libteletone/svn-commit.tmp
END
config.sub
README
K 25
svn:wc:ra_dav:version-url
V 60
/svn/sangoma_mgd/!svn/ver/1/trunk/lib/libteletone/config.sub
V 56
/svn/sangoma_mgd/!svn/ver/1/trunk/lib/libteletone/README
END
ltmain.sh
K 25
@ -75,11 +75,11 @@ svn:wc:ra_dav:version-url
V 59
/svn/sangoma_mgd/!svn/ver/1/trunk/lib/libteletone/ltmain.sh
END
README
config.sub
K 25
svn:wc:ra_dav:version-url
V 56
/svn/sangoma_mgd/!svn/ver/1/trunk/lib/libteletone/README
V 60
/svn/sangoma_mgd/!svn/ver/1/trunk/lib/libteletone/config.sub
END
INSTALL
K 25

View File

@ -1,14 +1,14 @@
8
dir
187
193
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/lib/libteletone
https://www.sangomapbx.com/svn/sangoma_mgd
2009-03-03T20:17:37.440465Z
149
2009-07-27T20:06:20.593649Z
190
davidy
@ -88,17 +88,8 @@ file
root
has-props
depcomp
file
2009-04-30T20:22:39.000000Z
7e26ecc61d5c27c50d334ebe19d5ef06
2007-09-21T20:53:51.260136Z
1
root
src
dir
ChangeLog
file
@ -112,8 +103,17 @@ d41d8cd98f00b204e9800998ecf8427e
1
root
src
dir
depcomp
file
2009-04-30T20:22:39.000000Z
7e26ecc61d5c27c50d334ebe19d5ef06
2007-09-21T20:53:51.260136Z
1
root
compile
file
@ -152,14 +152,14 @@ c2defdef8cd93c3d9e29628267699702
1
root
README
config.sub
file
2009-04-30T20:22:39.000000Z
234c8df99750448a5b1c4709304a38e5
74587542264e2bb761ee931ddb7d69f1
2007-09-21T20:53:51.260136Z
1
root
@ -176,14 +176,14 @@ file
1
root
config.sub
README
file
2009-04-30T20:22:39.000000Z
74587542264e2bb761ee931ddb7d69f1
234c8df99750448a5b1c4709304a38e5
2007-09-21T20:53:51.260136Z
1
root
@ -224,9 +224,6 @@ c878b7dac31225fc5b03ff92d985f147
1
root
.deps
dir
Makefile.am
file

View File

@ -1,7 +1,7 @@
8
dir
187
193
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/lib/libteletone/src
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -9,6 +9,11 @@
*
* =============================================
*
*
* v1.51 David Yat Sin <dyatsin@sangoma.com>
* MAX_SPANS increased to 32.
* Fix for server.process_table declared incorrectly
*
* v1.50 Nenad Corbic <ncorbic@sangoma.com>
* Logic to support multiple woomera clients hanging up the
* channel. This feature now supprorts woomera loadbalancing
@ -291,7 +296,7 @@ struct woomera_server server;
#endif
#define SMG_VERSION "v1.50"
#define SMG_VERSION "v1.51"
/* enable early media */
#if 1
@ -333,7 +338,7 @@ static int drop_seq=0;
const char WELCOME_TEXT[] =
"================================================================================\n"
"Sangoma Media Gateway Daemon v1.50 \n"
"Sangoma Media Gateway Daemon v1.51 \n"
"\n"
"TDM Signal Media Gateway for Sangoma/Wanpipe Cards\n"
"Copyright 2005, 2006, 2007 \n"
@ -2137,7 +2142,7 @@ static struct woomera_interface * launch_woomera_loop_thread(short_signal_event_
pthread_mutex_lock(&server.process_lock);
server.process_table[event->span][event->chan].dev = NULL;
memset(server.process_table[event->span][event->chan].session,0,SMG_SESSION_NAME_SZ);
pthread_mutex_unlock(&server.process_lock);
pthread_mutex_unlock(&server.process_lock);
smg_free(woomera);
log_printf(SMG_LOG_ALL, server.log, "Critical ERROR: memory/socket error\n");
return NULL;
@ -4071,11 +4076,12 @@ static void handle_remove_loop(short_signal_event_t *event)
static void handle_call_stop(short_signal_event_t *event)
{
struct woomera_interface *woomera;
struct woomera_interface *woomera;
int ack=0;
pthread_mutex_lock(&server.process_lock);
woomera = server.process_table[event->span][event->chan].dev;
woomera = NULL;
pthread_mutex_lock(&server.process_lock);
woomera = server.process_table[event->span][event->chan].dev;
if (woomera) {
if (!woomera_test_flag(woomera, WFLAG_WAIT_FOR_NACK_ACK_SENT) &&
@ -4094,7 +4100,7 @@ static void handle_call_stop(short_signal_event_t *event)
memset(server.process_table[event->span][event->chan].session,0,SMG_SESSION_NAME_SZ);
pthread_mutex_unlock(&server.process_lock);
if (woomera) {
if (woomera) {
woomera_set_cause_topbx(woomera,event->release_cause);
@ -5740,8 +5746,13 @@ static int woomera_shutdown(void)
int main(int argc, char *argv[])
{
int ret = 0;
memset(&server,0,sizeof(server));
memset(&woomera_dead_dev,0,sizeof(woomera_dead_dev));
mlockall(MCL_FUTURE);
memset(&server, 0, sizeof(server));
memset(&woomera_dead_dev, 0, sizeof(woomera_dead_dev));
ret=nice(-5);

View File

@ -298,7 +298,8 @@ struct woomera_session {
#define CORE_TANK_LEN CORE_MAX_CHAN_PER_SPAN*CORE_MAX_SPANS
struct woomera_server {
struct woomera_session process_table[CORE_MAX_CHAN_PER_SPAN][CORE_MAX_SPANS];
// struct woomera_session process_table[CORE_MAX_CHAN_PER_SPAN][CORE_MAX_SPANS];
struct woomera_session process_table[CORE_MAX_SPANS][CORE_MAX_CHAN_PER_SPAN];
struct woomera_interface *holding_tank[CORE_TANK_LEN];
int holding_tank_index;
struct woomera_interface master_connection;

View File

@ -3,10 +3,10 @@
#define __SMG_COMMON_H_
#define WOOMERA_MAX_SPAN 24
#define WOOMERA_MAX_SPAN 32
#define WOOMERA_MAX_CHAN 31
#define WOOMERA_BRI_MAX_SPAN 24
#define WOOMERA_BRI_MAX_SPAN 32
#define WOOMERA_BRI_MAX_CHAN 2
extern int max_spans;

View File

@ -49,7 +49,7 @@ void __log_printf(int level, FILE *fp, char *file, const char *func, int line, c
fp = server.log;
}
if (level && level >= server.debug && level < 100) {
if (level && level > server.debug && level < 100) {
return;
}

View File

@ -1,7 +1,7 @@
8
dir
187
193
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/scripts
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -1,7 +1,7 @@
8
dir
187
193
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/scripts/callgen
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -1,7 +1,7 @@
8
dir
187
193
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/scripts/init.d
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -1,7 +1,7 @@
8
dir
187
193
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/scripts/ss7
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -1,7 +1,7 @@
8
dir
187
193
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/unit
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -1,7 +1,7 @@
8
dir
187
193
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/unit/core
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -1,7 +1,7 @@
8
dir
187
193
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/unit/tests
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -1,7 +1,7 @@
8
dir
187
193
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/unit/tests/1_loop
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -1,7 +1,7 @@
8
dir
187
193
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/unit/tests/1_loop/tmp
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -1,7 +1,7 @@
8
dir
187
193
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/unit/tests/2_loop_call
https://www.sangomapbx.com/svn/sangoma_mgd

View File

@ -1,7 +1,7 @@
8
dir
187
193
https://www.sangomapbx.com/svn/sangoma_mgd/trunk/unit/tests/2_loop_call/tmp
https://www.sangomapbx.com/svn/sangoma_mgd

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,16 @@
AFT A101dm Firmware Change Log
=============================
Release V36
-----------
Aug 13 2009
Type: Recommended A101dm Firmware
New Feature: Added Free Running timer for Zapata/Dahdi
Changes: Firmware bug fix
Fixes on potential pci parity errors on some systems.
Release V34
-----------

View File

@ -1,5 +1,18 @@
AFT A102dm Firmware Change Log
=============================
Release V36
-----------
Aug 13 2009
Type: Recommended A102dm Firmware
New Feature: Added Free Running timer for Zaptel/Dahdi
Changes: Firmware bug fix
Fixes on potential pci parity errors on some systems.
Release V33
-----------
Sep 27 2007

View File

@ -1,5 +1,16 @@
AFT A104dm Firmware Change Log
=============================
Release V36
-----------
Aug 13 2009
Type: Recommended A104dm Firmware
New Feature: Added Free Running timer for Zaptel/Dahdi
Changes: Firmware bug fix
Fixes on potential pci parity errors on some systems.
Release V33
-----------
Sep 27 2007

View File

@ -1,6 +1,17 @@
AFT A108dm Firmware Change Log
===============================
Release V38
-----------
Aug 13 2009
Type: Recommended A108dm Firmware
New Feature: Added Free Running timer for Zaptel/Dahdi
Changes: Firmware bug fix
Fixes on potential pci parity errors on some systems.
Fixes echo canceller H100 Errors that can occour on some systems.
Release V33
-----------
Sep 27 2007

View File

@ -605,6 +605,7 @@ key_word_t common_conftab[] = /* Common configuration parameters */
{ "RM_PULSEDIALING", offsetof(wandev_conf_t, fe_cfg)+offsetof(sdla_fe_cfg_t, cfg) + smemof(sdla_remora_cfg_t, fxs_pulsedialing), DTYPE_UCHAR },
{ "RM_RINGAMPL", offsetof(wandev_conf_t, fe_cfg)+offsetof(sdla_fe_cfg_t, cfg) + smemof(sdla_remora_cfg_t, fxs_ringampl), DTYPE_INT },
{ "RM_RELAXCFG", offsetof(wandev_conf_t, fe_cfg)+offsetof(sdla_fe_cfg_t, cfg) + smemof(sdla_remora_cfg_t, relaxcfg), DTYPE_UCHAR },
{ "RM_FAKE_POLARITY", offsetof(wandev_conf_t, fe_cfg)+offsetof(sdla_fe_cfg_t, cfg) + smemof(sdla_remora_cfg_t, fake_polarity), DTYPE_UCHAR },
/* TDMV parameters */
{ "TDMV_SPAN", offsetof(wandev_conf_t, tdmv_conf)+smemof(wan_tdmv_conf_t, span_no), DTYPE_UINT},