mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-07-23 20:51:58 +00:00
Merge branch 'master' into smgmaster
This commit is contained in:
+22
-1
@@ -108,5 +108,26 @@ libs/freetdm/testpri
|
||||
libs/freetdm/testr2
|
||||
libs/freetdm/testsangomaboost
|
||||
libs/freetdm/testtones
|
||||
libs/esl/fs_cli
|
||||
libs/esl/ivrd
|
||||
libs/esl/testserver
|
||||
libs/esl/testclient
|
||||
libs/libcodec2/Makefile
|
||||
libs/libcodec2/Makefile.in
|
||||
libs/libcodec2/config.guess
|
||||
libs/libcodec2/config.sub
|
||||
libs/libcodec2/configure
|
||||
libs/libcodec2/depcomp
|
||||
libs/libcodec2/install-sh
|
||||
libs/libcodec2/libtool
|
||||
libs/libcodec2/ltmain.sh
|
||||
libs/libcodec2/missing
|
||||
libs/libcodec2/src/Makefile
|
||||
libs/libcodec2/src/Makefile.in
|
||||
libs/libcodec2/unittest/Makefile
|
||||
libs/libcodec2/unittest/Makefile.in
|
||||
src/mod/applications/mod_osp/Makefile
|
||||
|
||||
src/mod/applications/mod_osp/Makefile.in
|
||||
src/mod/applications/mod_hash/Makefile
|
||||
src/mod/applications/mod_hash/Makefile.in
|
||||
src/mod/applications/mod_hash/mod_hash.log
|
||||
|
||||
+16
-16
@@ -2042,18 +2042,18 @@ Global
|
||||
{7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|x64.Build.0 = Release|Win32
|
||||
{7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x64.Build.0 = Debug|Win32
|
||||
{7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x64.Build.0 = Debug|x64
|
||||
{7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Win32.Build.0 = Release|Win32
|
||||
{7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x64.ActiveCfg = Release|Win32
|
||||
{7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x64.Build.0 = Release|Win32
|
||||
{7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x64.ActiveCfg = Release|x64
|
||||
{7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x64.Build.0 = Release|x64
|
||||
{7EB71250-F002-4ED8-92CA-CA218114537A}.All|Win32.ActiveCfg = Release|Win32
|
||||
{7EB71250-F002-4ED8-92CA-CA218114537A}.All|x64.ActiveCfg = Release|Win32
|
||||
{7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{7EB71250-F002-4ED8-92CA-CA218114537A}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{7EB71250-F002-4ED8-92CA-CA218114537A}.Release|x64.ActiveCfg = Release|Win32
|
||||
{7EB71250-F002-4ED8-92CA-CA218114537A}.Release|x64.ActiveCfg = Release|x64
|
||||
{6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.All|Win32.ActiveCfg = Release|Win32
|
||||
{6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.All|x64.ActiveCfg = Release|Win32
|
||||
{6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
@@ -2063,9 +2063,9 @@ Global
|
||||
{464AAB78-5489-4916-BE51-BF8D61822311}.All|Win32.ActiveCfg = Release|Win32
|
||||
{464AAB78-5489-4916-BE51-BF8D61822311}.All|x64.ActiveCfg = Release|Win32
|
||||
{464AAB78-5489-4916-BE51-BF8D61822311}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{464AAB78-5489-4916-BE51-BF8D61822311}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{464AAB78-5489-4916-BE51-BF8D61822311}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{464AAB78-5489-4916-BE51-BF8D61822311}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{464AAB78-5489-4916-BE51-BF8D61822311}.Release|x64.ActiveCfg = Release|Win32
|
||||
{464AAB78-5489-4916-BE51-BF8D61822311}.Release|x64.ActiveCfg = Release|x64
|
||||
{0AD1177E-1FD8-4643-9391-431467A11084}.All|Win32.ActiveCfg = Release|x64
|
||||
{0AD1177E-1FD8-4643-9391-431467A11084}.All|x64.ActiveCfg = Release|x64
|
||||
{0AD1177E-1FD8-4643-9391-431467A11084}.All|x64.Build.0 = Release|x64
|
||||
@@ -2482,24 +2482,24 @@ Global
|
||||
{D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|x64.Build.0 = Release|Win32
|
||||
{D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|x64.Build.0 = Debug|Win32
|
||||
{D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|x64.Build.0 = Debug|x64
|
||||
{D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|Win32.Build.0 = Release|Win32
|
||||
{D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|x64.ActiveCfg = Release|Win32
|
||||
{D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|x64.Build.0 = Release|Win32
|
||||
{D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|x64.ActiveCfg = Release|x64
|
||||
{D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|x64.Build.0 = Release|x64
|
||||
{BA599D0A-4310-4505-91DA-6A6447B3E289}.All|Win32.ActiveCfg = Release|Win32
|
||||
{BA599D0A-4310-4505-91DA-6A6447B3E289}.All|x64.ActiveCfg = Release|Win32
|
||||
{BA599D0A-4310-4505-91DA-6A6447B3E289}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{BA599D0A-4310-4505-91DA-6A6447B3E289}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{BA599D0A-4310-4505-91DA-6A6447B3E289}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{BA599D0A-4310-4505-91DA-6A6447B3E289}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{BA599D0A-4310-4505-91DA-6A6447B3E289}.Release|x64.ActiveCfg = Release|Win32
|
||||
{BA599D0A-4310-4505-91DA-6A6447B3E289}.Release|x64.ActiveCfg = Release|x64
|
||||
{EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.All|Win32.ActiveCfg = Release|Win32
|
||||
{EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.All|x64.ActiveCfg = Release|Win32
|
||||
{EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Release|x64.ActiveCfg = Release|Win32
|
||||
{EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Release|x64.ActiveCfg = Release|x64
|
||||
{70564D74-199A-4452-9C60-19ED5F242F0D}.All|Win32.ActiveCfg = Release|x64
|
||||
{70564D74-199A-4452-9C60-19ED5F242F0D}.All|x64.ActiveCfg = Release|x64
|
||||
{70564D74-199A-4452-9C60-19ED5F242F0D}.All|x64.Build.0 = Release|x64
|
||||
|
||||
+1174
File diff suppressed because it is too large
Load Diff
+9
-1
@@ -267,7 +267,7 @@ src/include/switch_swigable_cpp.h: $(switch_srcdir)/src/include/switch_cpp.h
|
||||
##
|
||||
## Applications
|
||||
##
|
||||
bin_PROGRAMS = freeswitch fs_cli fs_ivrd tone2wav
|
||||
bin_PROGRAMS = freeswitch fs_cli fs_ivrd tone2wav fs_encode
|
||||
|
||||
##
|
||||
## fs_cli ()
|
||||
@@ -281,6 +281,14 @@ fs_cli_CFLAGS += -DHAVE_EDITLINE -I$(switch_srcdir)/libs/libedit/src
|
||||
fs_cli_LDADD = libs/libedit/src/.libs/libedit.a
|
||||
endif
|
||||
|
||||
##
|
||||
## fs_encode ()
|
||||
##
|
||||
fs_encode_SOURCES = src/fs_encode.c
|
||||
fs_encode_CFLAGS = $(AM_CFLAGS)
|
||||
fs_encode_LDFLAGS = $(AM_LDFLAGS) $(CORE_LIBS)
|
||||
fs_encode_LDADD = libfreeswitch.la
|
||||
|
||||
##
|
||||
## tone2wav ()
|
||||
##
|
||||
|
||||
+1
-1
@@ -148,7 +148,7 @@ if [ "x$libtoolize" = "x" ]; then
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -x "$libtoolize" ]; then
|
||||
echo "$libtoolize does not exist or ist not executable"
|
||||
echo "$libtoolize does not exist or is not executable"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
@@ -105,5 +105,5 @@ say/mod_say_ru
|
||||
#say/mod_say_th
|
||||
|
||||
## Experimental Modules (don't cry if they're broken)
|
||||
#../../contrib/mod/endpoints/mod_khomp
|
||||
#endpoints/mod_khomp
|
||||
#../../contrib/mod/xml_int/mod_xml_odbc
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
<param name="time-base-score" value="system"/>
|
||||
<param name="max-wait-time" value="0"/>
|
||||
<param name="max-wait-time-with-no-agent" value="0"/>
|
||||
<param name="max-wait-time-with-no-agent-time-reached" value="5"/>
|
||||
<param name="tier-rules-apply" value="false"/>
|
||||
<param name="tier-rule-wait-second" value="300"/>
|
||||
<param name="tier-rule-wait-multiply-level" value="true"/>
|
||||
|
||||
@@ -2,7 +2,16 @@
|
||||
<settings>
|
||||
<param name="listen-ip" value="0.0.0.0"/>
|
||||
<param name="listen-port" value="8031"/>
|
||||
<!-- Specify the first part of the node name
|
||||
(the host part after the @ will be autodetected)
|
||||
OR pass a complete nodename to avoid autodetection
|
||||
eg. freeswitch@example or freeswitch@example.com.
|
||||
If you pass a complete node name, the 'shortname' parameter has no effect. -->
|
||||
<param name="nodename" value="freeswitch"/>
|
||||
<!-- Specify this OR 'cookie-file' or $HOME/.erlang.cookie will be read -->
|
||||
<param name="cookie" value="ClueCon"/>
|
||||
<!-- Read a cookie from an arbitary erlang cookie file instead -->
|
||||
<!--<param name="cookie-file" value="/tmp/erlang.cookie"/>-->
|
||||
<param name="shortname" value="true"/>
|
||||
<!-- in additon to cookie, optionally restrict by ACL -->
|
||||
<!--<param name="apply-inbound-acl" value="lan"/>-->
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
<load module="mod_sofia"/>
|
||||
<load module="mod_loopback"/>
|
||||
<!-- <load module="mod_woomera"/> -->
|
||||
<!-- <load module="mod_freetdm"/> -->
|
||||
<!-- <load module="mod_openzap"/> -->
|
||||
<!-- <load module="mod_unicall"/> -->
|
||||
<!-- <load module="mod_skinny"/> -->
|
||||
|
||||
@@ -86,6 +86,7 @@
|
||||
<!-- <param name="core-db-dsn" value="dsn:username:password" /> -->
|
||||
<!-- The system will create all the db schemas automatically, set this to false to avoid this behaviour-->
|
||||
<!--<param name="auto-create-schemas" value="true"/>-->
|
||||
<!-- <param name="core-dbtype" value="MSSQL"/> -->
|
||||
</settings>
|
||||
|
||||
</configuration>
|
||||
|
||||
@@ -33,9 +33,10 @@
|
||||
<param name="ff-key" value="6"/>
|
||||
<param name="rew-key" value="4"/>
|
||||
<param name="skip-greet-key" value="#"/>
|
||||
<!--<param name="previous-message-key" value=""/>-->
|
||||
<!--<param name="next-message-key" value=""/>-->
|
||||
<!--<param name="skip-info-key" value=""/>-->
|
||||
<param name="previous-message-key" value="1"/>-->
|
||||
<param name="next-message-key" value="3"/>
|
||||
<param name="skip-info-key" value="*"/>
|
||||
<param name="repeat-message-key" value="0"/>
|
||||
<param name="record-silence-threshold" value="200"/>
|
||||
<param name="record-silence-hits" value="2"/>
|
||||
<param name="web-template-file" value="web-vm.tpl"/>
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
<extension name="global-intercept">
|
||||
<condition field="destination_number" expression="^886$">
|
||||
<action application="answer"/>
|
||||
<action application="intercept" data="${hash(select/${domain_name}-last_dial/global)}"/>
|
||||
<action application="intercept" data="${hash(select/${domain_name}-last_dial_ext/global)}"/>
|
||||
<action application="sleep" data="2000"/>
|
||||
</condition>
|
||||
</extension>
|
||||
@@ -103,7 +103,7 @@
|
||||
<extension name="group-intercept">
|
||||
<condition field="destination_number" expression="^\*8$">
|
||||
<action application="answer"/>
|
||||
<action application="intercept" data="${hash(select/${domain_name}-last_dial/${callgroup})}"/>
|
||||
<action application="intercept" data="${hash(select/${domain_name}-last_dial_ext/${callgroup})}"/>
|
||||
<action application="sleep" data="2000"/>
|
||||
</condition>
|
||||
</extension>
|
||||
@@ -260,6 +260,8 @@
|
||||
<action application="set" data="continue_on_fail=true"/>
|
||||
<action application="hash" data="insert/${domain_name}-call_return/${dialed_extension}/${caller_id_number}"/>
|
||||
<action application="hash" data="insert/${domain_name}-last_dial_ext/${dialed_extension}/${uuid}"/>
|
||||
<action application="hash" data="insert/${domain_name}-last_dial_ext/${called_party_callgroup}/${uuid}"/>
|
||||
<action application="hash" data="insert/${domain_name}-last_dial_ext/global/${uuid}"/>
|
||||
<action application="set" data="called_party_callgroup=${user_data(${dialed_extension}@${domain_name} var callgroup)}"/>
|
||||
<!--<action application="export" data="nolocal:sip_secure_media=${user_data(${dialed_extension}@${domain_name} var sip_secure_media)}"/>-->
|
||||
<action application="hash" data="insert/${domain_name}-last_dial/${called_party_callgroup}/${uuid}"/>
|
||||
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
Please do not change the maintainer (as found in the control file).
|
||||
|
||||
Please DO send me a note before changing anything here. Also, PLEASE DO MAKE A
|
||||
JIRA FIRST !!!!
|
||||
|
||||
This request is the result of far too many sleepless nights and far too many
|
||||
people breaking this far too often. So, HANDS OFF FOR NOW !!!!
|
||||
|
||||
Again, to be perfectly clear:
|
||||
1. Do not make any changes before verifying that they are OK with the current
|
||||
maintainer (yes, that is me*).
|
||||
|
||||
2. Before the mere idea of making a change crosses your mind, create a ticket in
|
||||
Jira and assign it to the current maintainer.
|
||||
|
||||
3. As current maintainer, I have other obligations besides fixing things people
|
||||
break in the Debian build. So, please be patient; it can sometimes take a
|
||||
bit for me to respond.
|
||||
|
||||
4. Creating and maintaining this packages has been a lot of work. Please help
|
||||
me maintain it by not fixing it to death.
|
||||
|
||||
5. The maintainer is always right.
|
||||
|
||||
6. If you believe the maintainer is wrong, please see item #5.
|
||||
|
||||
|
||||
|
||||
* Michal Bielicki <michal.bielicki@seventhsignal.de>
|
||||
Vendored
+53
-3
@@ -1,3 +1,53 @@
|
||||
freeswitch (1.0.head~git.master.20101015.1-1) unstable; urgency=low
|
||||
|
||||
* reintroduced mod_flite
|
||||
* disabled the patching stuff introduced by Julien ... needs an overwork
|
||||
* reintroduced mod_tts_commandline
|
||||
* cleaned up rules file and module make rules
|
||||
* more trivial changes and updates :)
|
||||
|
||||
-- Michal Bielicki <michal.bielicki@seventhsignal.de> Fri, 15 Oct 2010 13:14:02 +0200
|
||||
|
||||
freeswitch (1.0.head~git.master.20101014.1-1) unstable; urgency=low
|
||||
|
||||
* replaced mod_openzap with mod_freetdm
|
||||
* added mod_theora
|
||||
* added mod_codec2
|
||||
* added mod_amrwb
|
||||
* added mod_portaudio_stream
|
||||
* cleaned up rules file and module make rules
|
||||
* added patches from Julien Duqene (FS-369)
|
||||
* Various trivial changes and updates :)
|
||||
|
||||
-- Michal Bielicki <michal.bielicki@seventhsignal.de> Fri, 15 Oct 2010 05:05:02 +0200
|
||||
|
||||
freeswitch (1.0.head~git.master.20100601.2-1) unstable; urgency=low
|
||||
|
||||
* Various trivial changes and updates.
|
||||
* Change upstream package version numbering scheme for unreleased versions:
|
||||
new format is major.minor.micro~git.branch.date.commits-1
|
||||
* Change source format to 3.0 (quilt).
|
||||
* Upgrade debhelper compatibility to version 7.
|
||||
* Update maintainer data and copyright file; now includes the full text
|
||||
of the MPL since it is not (yet?) available in /usr/share/common-licenses/
|
||||
|
||||
* Build and install mod_file_string.so (FSBUILD-247)
|
||||
* Work around build failure caused by clean rules for openzap.
|
||||
|
||||
* Remove several libraries from explicit dependencies, there were no special
|
||||
version requirements and they should be picked up by dh_shlibdeps.
|
||||
* Add dh_makeshlibs and make dh_shlibsdeps work again.
|
||||
* Move openssl to Suggests: as it is not a required package to install or
|
||||
run freeswitch.
|
||||
|
||||
* Add upstream-convert rule to apply patches, generate orig tarball
|
||||
and set package version.
|
||||
* Add check to ensure debian patches are applied before attempting build.
|
||||
* Fix clean rule to avoid unwanted tree change before building orig.tar
|
||||
archives with git-buildpackage.
|
||||
|
||||
-- Julien Plissonneau Duquene <exp-end-2010-06-88a41947@aqiii.org> Tue, 01 Jun 2010 09:53:44 -0400
|
||||
|
||||
freeswitch (1.0.6-1ubuntu1) maverick; urgency=low
|
||||
|
||||
[ Gabriel Gunderson ]
|
||||
@@ -15,7 +65,7 @@ freeswitch (1.0.4-1ubuntu2) karmic; urgency=low
|
||||
* upgrade: Add more verbosity when building to make it easier to find build
|
||||
errors.
|
||||
* upgrade: Remove the requirement for EXACTLY automake1.9 and change it to
|
||||
need atleast automake 1.9
|
||||
need at least automake 1.9
|
||||
* upgrade: Add the modules (directory, cluechoo, and valet_parking) to the
|
||||
build files. These are in the standard build, so they should be here too.
|
||||
|
||||
@@ -574,7 +624,7 @@ freeswitch (1.0.1-1) unstable; urgency=low
|
||||
* ADD: reboot option for sip phones to flush_inboud_reg sofia profile api command
|
||||
* FIX: add small padding to end of mp3 to avoid cut off mp3 recording
|
||||
* FIX: patch multiple SDP connection lines in sdp for proxy media mode (MODENDP-109)
|
||||
* FIX: don't parse ringback varable in proxy situations
|
||||
* FIX: don't parse ringback variable in proxy situations
|
||||
* ADD: per call vm recording ext with vm_message_ext variable
|
||||
* ADD: sip_bye_h prefix to add headers to bye
|
||||
* ENHANCEMENT: more interfaces available in show fsapi command
|
||||
@@ -596,7 +646,7 @@ freeswitch (1.0.1~trunk) unstable; urgency=low
|
||||
- Added mod_say_es and mod_say_nl
|
||||
- Updated descriptions
|
||||
- Added mod_cdr_csv
|
||||
* Fixed typos and some errors in the previus patch.
|
||||
* Fixed typos and some errors in the previous patch.
|
||||
* Modified monit script. Now it should work.
|
||||
* The debian build system now bootstrap automagically if it's necessary and all scripts are in place.
|
||||
|
||||
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
4
|
||||
7
|
||||
|
||||
Vendored
+44
-10
@@ -2,18 +2,22 @@ Source: freeswitch
|
||||
Section: comm
|
||||
Priority: extra
|
||||
Maintainer: FreeSWITCH developers <freeswitch-dev@lists.freeswitch.org>
|
||||
Uploaders: Michal Bielicki <michal.bielicki@voiceworks.pl>, Gabriel Gunderson <gabe@gundy.org>, William King <quentusrex@gmail.com>, Mathieu Parent <sathieu@debian.org>
|
||||
Build-Depends: debhelper (>= 5), fakeroot, wget, automake (>=1.9), autoconf, libtool, unixodbc-dev, libasound2-dev, libcurl3-openssl-dev|libcurl4-openssl-dev, libssl-dev, ncurses-dev, libogg-dev, libvorbis-dev, libperl-dev, libgdbm-dev, libdb-dev, libgnutls-dev, libtiff4-dev, python-dev, libx11-dev, uuid-dev
|
||||
Uploaders: Michal Bielicki <michal.bielicki@seventhsignal.pl>, Gabriel Gunderson <gabe@gundy.org>, William King <quentusrex@gmail.com>, Mathieu Parent <sathieu@debian.org>
|
||||
Build-Depends: debhelper (>= 7), wget, automake (>=1.9), autoconf, libtool,
|
||||
unixodbc-dev, libasound2-dev, libcurl3-openssl-dev|libcurl4-openssl-dev,
|
||||
libssl-dev, ncurses-dev, libogg-dev, libvorbis-dev, libperl-dev, libgdbm-dev,
|
||||
libdb-dev, libgnutls-dev, libtiff4-dev, python-dev, libx11-dev, uuid-dev
|
||||
Homepage: http://freeswitch.org/
|
||||
Standards-Version: 3.9.1
|
||||
Vcs-Svn: http://svn.freeswitch.org/svn/freeswitch/trunk/
|
||||
Vcs-Browser: http://fisheye.freeswitch.org/browse/FreeSWITCH
|
||||
Vcs-Git: git://git.freeswitch.org/freeswitch.git
|
||||
Vcs-Browser: http://fisheye.freeswitch.org/browse/freeswitch.git
|
||||
|
||||
Package: freeswitch
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, adduser, unixodbc, libasound2, libcurl3, openssl, libncurses5, libvorbis0a, libuuid1
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||
Recommends: freeswitch-lang-en
|
||||
Suggests: freeswitch-spidermonkey, freeswitch-lua, freeswitch-perl, freeswitch-sounds-music-8000, monit
|
||||
Suggests: freeswitch-spidermonkey, freeswitch-lua, freeswitch-perl,
|
||||
freeswitch-sounds-music-8000, monit, openssl
|
||||
Description: open source telephony platform
|
||||
FreeSWITCH is an open source telephony platform designed to facilitate the
|
||||
creation of voice and chat driven products scaling from a soft-phone up to a
|
||||
@@ -48,8 +52,8 @@ Description: development libraries and header files for FreeSWITCH
|
||||
gateway or a media server to host IVR applications using simple scripts or XML
|
||||
to control the callflow.
|
||||
.
|
||||
This package contains the include files used if you wish to compile a package which requires FreeSWITCH's
|
||||
source file headers.
|
||||
This package contains the include files used if you wish to compile a package
|
||||
which require FreeSWITCH's source file headers.
|
||||
|
||||
Package: freeswitch-spidermonkey
|
||||
Architecture: any
|
||||
@@ -123,6 +127,19 @@ Description: pass through AMR codec support for FreeSWITCH
|
||||
.
|
||||
This package contains the mod_amr codec module.
|
||||
|
||||
Package: freeswitch-codec-passthru-amrwb
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch
|
||||
Description: pass through AMRWB codec support for FreeSWITCH
|
||||
FreeSWITCH is an open source telephony platform designed to facilitate the
|
||||
creation of voice and chat driven products scaling from a soft-phone up to a
|
||||
soft-switch. It can be used as a simple switching engine, a PBX, a media
|
||||
gateway or a media server to host IVR applications using simple scripts or XML
|
||||
to control the callflow.
|
||||
.
|
||||
This package contains the mod_amrwb codec module.
|
||||
|
||||
|
||||
Package: freeswitch-codec-passthru-g729
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch
|
||||
@@ -139,7 +156,8 @@ Package: freeswitch-lang-en
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch
|
||||
Recommends: freeswitch-sounds-en-us-callie-8000
|
||||
Suggests: freeswitch-sounds-en-us-callie-16000, freeswitch-sounds-en-us-callie-32000, freeswitch-sounds-en-us-callie-48000
|
||||
Suggests: freeswitch-sounds-en-us-callie-16000, freeswitch-sounds-en-us-callie-32000,
|
||||
freeswitch-sounds-en-us-callie-48000
|
||||
Description: English language files for FreeSWITCH
|
||||
FreeSWITCH is an open source telephony platform designed to facilitate the
|
||||
creation of voice and chat driven products scaling from a soft-phone up to a
|
||||
@@ -219,7 +237,8 @@ Package: freeswitch-lang-ru
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch
|
||||
Recommends: freeswitch-sounds-ru-ru-elena-8000
|
||||
Suggests: freeswitch-sounds-ru-ru-elena-16000, freeswitch-sounds-ru-ru-elena-32000, freeswitch-sounds-ru-ru-elena-48000
|
||||
Suggests: freeswitch-sounds-ru-ru-elena-16000, freeswitch-sounds-ru-ru-elena-32000,
|
||||
freeswitch-sounds-ru-ru-elena-48000
|
||||
Description: Russian language files for FreeSWITCH
|
||||
FreeSWITCH is an open source telephony platform designed to facilitate the
|
||||
creation of voice and chat driven products scaling from a soft-phone up to a
|
||||
@@ -229,3 +248,18 @@ Description: Russian language files for FreeSWITCH
|
||||
.
|
||||
This package contains the mod_say_ru module and available language
|
||||
configuration files.
|
||||
|
||||
Package: freeswitch-freetdm
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch
|
||||
Description: FreeTDM is a signaling and board API abstraction used mainly by the
|
||||
FreeSWITCH project to place calls in TDM and analog telephony circuits. The library
|
||||
was previously named "OpenZAP". Sangoma has worked along with the FreeSWITCH
|
||||
developers in this library so Sangoma's customers can also use it to do custom
|
||||
development. The library is still under heavy development but the overall API
|
||||
does not change often. The intention of the library is to present a consistent
|
||||
API for different telephony signaling stacks and board I/O APIs. FreeTDM can
|
||||
either be used as a standalone API or along with FreeSWITCH as an endpoint
|
||||
(mod_freetdm). If you want to use it as a part of FreeSWITCH remember following
|
||||
the FreeSWITCH configuration section.
|
||||
This package contains all the freetdm modules and libs and submodules
|
||||
|
||||
Vendored
+523
-36
@@ -1,51 +1,538 @@
|
||||
This package was debianized by Michal Bielicki
|
||||
<michal.bielicki@voiceworks.pl> on Now 25, 2007.
|
||||
|
||||
The current Debian maintainer is Nicholas Amorim <nicholas@montrealconsultoria.com.br>
|
||||
<michal.bielicki@seventhsignal.de> on Nov 25, 2007.
|
||||
|
||||
The source was downloaded from http://www.freewitch.org/
|
||||
|
||||
Upstream authors:
|
||||
Anthony Minessale II <anthmct@yahoo.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2006-2009
|
||||
the Initial Developer. All Rights Reserved.
|
||||
Upstream maintainers:
|
||||
Current: Michal Bielicki <michal.bielicki@seventhsignal.de>
|
||||
Past: Nicholas Amorim <nicholas@montrealconsultoria.com.br>
|
||||
See changelog.Debian.gz for a full list of contributors.
|
||||
|
||||
The PRIMARY AUTHORS are (and/or have been):
|
||||
The Initial Developer of the Original Code is
|
||||
Anthony Minessale II <anthm@freeswitch.org>
|
||||
Portions created by the Initial Developer are Copyright (C)
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Anthony Minessale II <anthmct@yahoo.com> - Primary developer of all core components
|
||||
and many of the included modules. Much of freeswitch is based on his work.
|
||||
|
||||
Michael Jerris <mike@jerris.com> - Windows porter and responsible for the
|
||||
windows\msvc build system.
|
||||
The PRIMARY AUTHORS are (and/or have been):
|
||||
|
||||
Anthony Minessale II <anthm@freeswitch.org> - Primary developer of all core
|
||||
components and many of the included modules. Much of freeswitch is based
|
||||
on his work.
|
||||
|
||||
Michael Jerris <mike@jerris.com> - Windows porter and responsible for the
|
||||
windows\msvc build system.
|
||||
|
||||
And here is an inevitably incomplete list of MUCH-APPRECIATED CONTRIBUTORS --
|
||||
people who have submitted patches, reported bugs, and generally made Freeswitch
|
||||
that much better:
|
||||
|
||||
Brian K. West - For countless hours of work on BSD and Mac support, finding countless bugs, and moral support. Xcode project files.
|
||||
Joshua Colp - For his help making mod_exosip possible (which we are now getting rid of but oh well),
|
||||
and for just being a swell guy! (until he backstabbed us, c'est la vie)
|
||||
Michal "cypromis" Bielicki (michal.bielicki AT voiceworks.pl) - Solaris porting, and autotools enhancements, debian, rpm and solaris packaging.
|
||||
James Martelletti <james@nerdc0re.com> - All around cool guy (mod_syslog)
|
||||
Johny Kadarisman <jkr888@gmail.com>
|
||||
Yossi Neiman of Cartis Solutions, Inc. <freeswitch AT cartissolutions.com> - implementation of mod_cdr (perldd, mysql, csv)
|
||||
Stefan Knoblich - Various patches and support. Thanks.
|
||||
Justin Unger - <justinunger at gmail dot com> Lots of help with patches and SIP testing. Thanks!
|
||||
Paul D. Tinsley - Various patches and support. <pdt at jackhammer.org>
|
||||
Ken Rice - <krice AT suspicious.org> - xmlcdr, sofia improvements, load testing.
|
||||
Neal Horman <neal at wanlink dot com> - conference improvements, switch_ivr menu additions and other tweaks.
|
||||
Johny Kadarisman <jkr888 at gmail.com> - mod_python fixups.
|
||||
Michael Murdock <mike at mmurdock dot org> - testing, documentation, bug finding and usability enhancements.
|
||||
Matt Klein <mklein@nmedia.net>
|
||||
Jonas Gauffin <jonas at gauffin dot org> - Bugfixes and additions in mod_spidermonkey_odbc
|
||||
Damjan Jovanovic <moctodliamgtavojtodnajmad backwards> - mod_java
|
||||
Brian K. West - For countless hours of work on BSD and Mac support, finding
|
||||
countless bugs, and moral support. Xcode project files.
|
||||
Joshua Colp - For his help making mod_exosip possible (which we are now
|
||||
getting rid of but oh well), and for just being a swell guy!
|
||||
Michal "cypromis" Bielicki (michal.bielicki AT voiceworks.pl) - Solaris
|
||||
porting, and autotools enhancements, debian, rpm and solaris packaging.
|
||||
James Martelletti <james@nerdc0re.com> - All around cool guy (mod_syslog)
|
||||
Johny Kadarisman <jkr888@gmail.com>
|
||||
Yossi Neiman of Cartis Solutions, Inc. <freeswitch AT cartissolutions.com> -
|
||||
implementation of mod_cdr (perldd, mysql, csv)
|
||||
Stefan Knoblich - Sofia TLS, various patches and support. Thanks.
|
||||
Justin Unger - <justinunger at gmail dot com> Lots of help with patches and
|
||||
SIP testing. Thanks!
|
||||
Paul D. Tinsley - Various patches and support. <pdt at jackhammer.org>
|
||||
Ken Rice - <krice AT suspicious.org> - xmlcdr, sofia improvements, load
|
||||
testing, 1 liners here and there.
|
||||
Neal Horman <neal at wanlink dot com> - conference improvements, switch_ivr
|
||||
menu additions and other tweaks.
|
||||
Johny Kadarisman <jkr888 at gmail.com> - mod_python fixups.
|
||||
Michael Murdock <mike at mmurdock dot org> - testing, documentation, bug
|
||||
finding and usability enhancements.
|
||||
Matt Klein <mklein@nmedia.net>
|
||||
Jonas Gauffin <jonas at gauffin dot org> - mod_cdr_odbc,
|
||||
mod_spidermonkey_socket, Bugfixes and additions in mod_spidermonkey_odbc and
|
||||
mod_spidermonkey, .net event socket library.
|
||||
Damjan Jovanovic <moctodliamgtavojtodnajmad backwards> - mod_java
|
||||
Juan Jose Comellas <juanjo@comellas.org> - Patch to switch_utils for arg
|
||||
parsing.
|
||||
Dale Thatcher <freeswitch at dalethatcher dot com> - Additions to
|
||||
mod_conference.
|
||||
Simon Perreault & Marc Blanchet from Viagenie.ca - IPv6 Support.
|
||||
|
||||
A big THANK YOU goes to:
|
||||
|
||||
Justin Cassidy - Build related cleanups and automatic build setup.
|
||||
Bret McDanel - Javascript Documentation, constant feedback and input, many other things I am sure I am forgetting.
|
||||
Justin Cassidy - Build related cleanups and automatic build setup.
|
||||
Bret McDanel - Javascript Documentation, constant feedback and input, many
|
||||
other things I am sure I am forgetting.
|
||||
|
||||
|
||||
MOZILLA PUBLIC LICENSE
|
||||
Version 1.1
|
||||
|
||||
---------------
|
||||
|
||||
1. Definitions.
|
||||
|
||||
1.0.1. "Commercial Use" means distribution or otherwise making the
|
||||
Covered Code available to a third party.
|
||||
|
||||
1.1. "Contributor" means each entity that creates or contributes to
|
||||
the creation of Modifications.
|
||||
|
||||
1.2. "Contributor Version" means the combination of the Original
|
||||
Code, prior Modifications used by a Contributor, and the Modifications
|
||||
made by that particular Contributor.
|
||||
|
||||
1.3. "Covered Code" means the Original Code or Modifications or the
|
||||
combination of the Original Code and Modifications, in each case
|
||||
including portions thereof.
|
||||
|
||||
1.4. "Electronic Distribution Mechanism" means a mechanism generally
|
||||
accepted in the software development community for the electronic
|
||||
transfer of data.
|
||||
|
||||
1.5. "Executable" means Covered Code in any form other than Source
|
||||
Code.
|
||||
|
||||
1.6. "Initial Developer" means the individual or entity identified
|
||||
as the Initial Developer in the Source Code notice required by Exhibit
|
||||
A.
|
||||
|
||||
1.7. "Larger Work" means a work which combines Covered Code or
|
||||
portions thereof with code not governed by the terms of this License.
|
||||
|
||||
1.8. "License" means this document.
|
||||
|
||||
1.8.1. "Licensable" means having the right to grant, to the maximum
|
||||
extent possible, whether at the time of the initial grant or
|
||||
subsequently acquired, any and all of the rights conveyed herein.
|
||||
|
||||
1.9. "Modifications" means any addition to or deletion from the
|
||||
substance or structure of either the Original Code or any previous
|
||||
Modifications. When Covered Code is released as a series of files, a
|
||||
Modification is:
|
||||
A. Any addition to or deletion from the contents of a file
|
||||
containing Original Code or previous Modifications.
|
||||
|
||||
B. Any new file that contains any part of the Original Code or
|
||||
previous Modifications.
|
||||
|
||||
1.10. "Original Code" means Source Code of computer software code
|
||||
which is described in the Source Code notice required by Exhibit A as
|
||||
Original Code, and which, at the time of its release under this
|
||||
License is not already Covered Code governed by this License.
|
||||
|
||||
1.10.1. "Patent Claims" means any patent claim(s), now owned or
|
||||
hereafter acquired, including without limitation, method, process,
|
||||
and apparatus claims, in any patent Licensable by grantor.
|
||||
|
||||
1.11. "Source Code" means the preferred form of the Covered Code for
|
||||
making modifications to it, including all modules it contains, plus
|
||||
any associated interface definition files, scripts used to control
|
||||
compilation and installation of an Executable, or source code
|
||||
differential comparisons against either the Original Code or another
|
||||
well known, available Covered Code of the Contributor's choice. The
|
||||
Source Code can be in a compressed or archival form, provided the
|
||||
appropriate decompression or de-archiving software is widely available
|
||||
for no charge.
|
||||
|
||||
1.12. "You" (or "Your") means an individual or a legal entity
|
||||
exercising rights under, and complying with all of the terms of, this
|
||||
License or a future version of this License issued under Section 6.1.
|
||||
For legal entities, "You" includes any entity which controls, is
|
||||
controlled by, or is under common control with You. For purposes of
|
||||
this definition, "control" means (a) the power, direct or indirect,
|
||||
to cause the direction or management of such entity, whether by
|
||||
contract or otherwise, or (b) ownership of more than fifty percent
|
||||
(50%) of the outstanding shares or beneficial ownership of such
|
||||
entity.
|
||||
|
||||
2. Source Code License.
|
||||
|
||||
2.1. The Initial Developer Grant.
|
||||
The Initial Developer hereby grants You a world-wide, royalty-free,
|
||||
non-exclusive license, subject to third party intellectual property
|
||||
claims:
|
||||
(a) under intellectual property rights (other than patent or
|
||||
trademark) Licensable by Initial Developer to use, reproduce,
|
||||
modify, display, perform, sublicense and distribute the Original
|
||||
Code (or portions thereof) with or without Modifications, and/or
|
||||
as part of a Larger Work; and
|
||||
|
||||
(b) under Patents Claims infringed by the making, using or
|
||||
selling of Original Code, to make, have made, use, practice,
|
||||
sell, and offer for sale, and/or otherwise dispose of the
|
||||
Original Code (or portions thereof).
|
||||
|
||||
(c) the licenses granted in this Section 2.1(a) and (b) are
|
||||
effective on the date Initial Developer first distributes
|
||||
Original Code under the terms of this License.
|
||||
|
||||
(d) Notwithstanding Section 2.1(b) above, no patent license is
|
||||
granted: 1) for code that You delete from the Original Code; 2)
|
||||
separate from the Original Code; or 3) for infringements caused
|
||||
by: i) the modification of the Original Code or ii) the
|
||||
combination of the Original Code with other software or devices.
|
||||
|
||||
2.2. Contributor Grant.
|
||||
Subject to third party intellectual property claims, each Contributor
|
||||
hereby grants You a world-wide, royalty-free, non-exclusive license
|
||||
|
||||
(a) under intellectual property rights (other than patent or
|
||||
trademark) Licensable by Contributor, to use, reproduce, modify,
|
||||
display, perform, sublicense and distribute the Modifications
|
||||
created by such Contributor (or portions thereof) either on an
|
||||
unmodified basis, with other Modifications, as Covered Code
|
||||
and/or as part of a Larger Work; and
|
||||
|
||||
(b) under Patent Claims infringed by the making, using, or
|
||||
selling of Modifications made by that Contributor either alone
|
||||
and/or in combination with its Contributor Version (or portions
|
||||
of such combination), to make, use, sell, offer for sale, have
|
||||
made, and/or otherwise dispose of: 1) Modifications made by that
|
||||
Contributor (or portions thereof); and 2) the combination of
|
||||
Modifications made by that Contributor with its Contributor
|
||||
Version (or portions of such combination).
|
||||
|
||||
(c) the licenses granted in Sections 2.2(a) and 2.2(b) are
|
||||
effective on the date Contributor first makes Commercial Use of
|
||||
the Covered Code.
|
||||
|
||||
(d) Notwithstanding Section 2.2(b) above, no patent license is
|
||||
granted: 1) for any code that Contributor has deleted from the
|
||||
Contributor Version; 2) separate from the Contributor Version;
|
||||
3) for infringements caused by: i) third party modifications of
|
||||
Contributor Version or ii) the combination of Modifications made
|
||||
by that Contributor with other software (except as part of the
|
||||
Contributor Version) or other devices; or 4) under Patent Claims
|
||||
infringed by Covered Code in the absence of Modifications made by
|
||||
that Contributor.
|
||||
|
||||
3. Distribution Obligations.
|
||||
|
||||
3.1. Application of License.
|
||||
The Modifications which You create or to which You contribute are
|
||||
governed by the terms of this License, including without limitation
|
||||
Section 2.2. The Source Code version of Covered Code may be
|
||||
distributed only under the terms of this License or a future version
|
||||
of this License released under Section 6.1, and You must include a
|
||||
copy of this License with every copy of the Source Code You
|
||||
distribute. You may not offer or impose any terms on any Source Code
|
||||
version that alters or restricts the applicable version of this
|
||||
License or the recipients' rights hereunder. However, You may include
|
||||
an additional document offering the additional rights described in
|
||||
Section 3.5.
|
||||
|
||||
3.2. Availability of Source Code.
|
||||
Any Modification which You create or to which You contribute must be
|
||||
made available in Source Code form under the terms of this License
|
||||
either on the same media as an Executable version or via an accepted
|
||||
Electronic Distribution Mechanism to anyone to whom you made an
|
||||
Executable version available; and if made available via Electronic
|
||||
Distribution Mechanism, must remain available for at least twelve (12)
|
||||
months after the date it initially became available, or at least six
|
||||
(6) months after a subsequent version of that particular Modification
|
||||
has been made available to such recipients. You are responsible for
|
||||
ensuring that the Source Code version remains available even if the
|
||||
Electronic Distribution Mechanism is maintained by a third party.
|
||||
|
||||
3.3. Description of Modifications.
|
||||
You must cause all Covered Code to which You contribute to contain a
|
||||
file documenting the changes You made to create that Covered Code and
|
||||
the date of any change. You must include a prominent statement that
|
||||
the Modification is derived, directly or indirectly, from Original
|
||||
Code provided by the Initial Developer and including the name of the
|
||||
Initial Developer in (a) the Source Code, and (b) in any notice in an
|
||||
Executable version or related documentation in which You describe the
|
||||
origin or ownership of the Covered Code.
|
||||
|
||||
3.4. Intellectual Property Matters
|
||||
(a) Third Party Claims.
|
||||
If Contributor has knowledge that a license under a third party's
|
||||
intellectual property rights is required to exercise the rights
|
||||
granted by such Contributor under Sections 2.1 or 2.2,
|
||||
Contributor must include a text file with the Source Code
|
||||
distribution titled "LEGAL" which describes the claim and the
|
||||
party making the claim in sufficient detail that a recipient will
|
||||
know whom to contact. If Contributor obtains such knowledge after
|
||||
the Modification is made available as described in Section 3.2,
|
||||
Contributor shall promptly modify the LEGAL file in all copies
|
||||
Contributor makes available thereafter and shall take other steps
|
||||
(such as notifying appropriate mailing lists or newsgroups)
|
||||
reasonably calculated to inform those who received the Covered
|
||||
Code that new knowledge has been obtained.
|
||||
|
||||
(b) Contributor APIs.
|
||||
If Contributor's Modifications include an application programming
|
||||
interface and Contributor has knowledge of patent licenses which
|
||||
are reasonably necessary to implement that API, Contributor must
|
||||
also include this information in the LEGAL file.
|
||||
|
||||
(c) Representations.
|
||||
Contributor represents that, except as disclosed pursuant to
|
||||
Section 3.4(a) above, Contributor believes that Contributor's
|
||||
Modifications are Contributor's original creation(s) and/or
|
||||
Contributor has sufficient rights to grant the rights conveyed by
|
||||
this License.
|
||||
|
||||
3.5. Required Notices.
|
||||
You must duplicate the notice in Exhibit A in each file of the Source
|
||||
Code. If it is not possible to put such notice in a particular Source
|
||||
Code file due to its structure, then You must include such notice in a
|
||||
location (such as a relevant directory) where a user would be likely
|
||||
to look for such a notice. If You created one or more Modification(s)
|
||||
You may add your name as a Contributor to the notice described in
|
||||
Exhibit A. You must also duplicate this License in any documentation
|
||||
for the Source Code where You describe recipients' rights or ownership
|
||||
rights relating to Covered Code. You may choose to offer, and to
|
||||
charge a fee for, warranty, support, indemnity or liability
|
||||
obligations to one or more recipients of Covered Code. However, You
|
||||
may do so only on Your own behalf, and not on behalf of the Initial
|
||||
Developer or any Contributor. You must make it absolutely clear than
|
||||
any such warranty, support, indemnity or liability obligation is
|
||||
offered by You alone, and You hereby agree to indemnify the Initial
|
||||
Developer and every Contributor for any liability incurred by the
|
||||
Initial Developer or such Contributor as a result of warranty,
|
||||
support, indemnity or liability terms You offer.
|
||||
|
||||
3.6. Distribution of Executable Versions.
|
||||
You may distribute Covered Code in Executable form only if the
|
||||
requirements of Section 3.1-3.5 have been met for that Covered Code,
|
||||
and if You include a notice stating that the Source Code version of
|
||||
the Covered Code is available under the terms of this License,
|
||||
including a description of how and where You have fulfilled the
|
||||
obligations of Section 3.2. The notice must be conspicuously included
|
||||
in any notice in an Executable version, related documentation or
|
||||
collateral in which You describe recipients' rights relating to the
|
||||
Covered Code. You may distribute the Executable version of Covered
|
||||
Code or ownership rights under a license of Your choice, which may
|
||||
contain terms different from this License, provided that You are in
|
||||
compliance with the terms of this License and that the license for the
|
||||
Executable version does not attempt to limit or alter the recipient's
|
||||
rights in the Source Code version from the rights set forth in this
|
||||
License. If You distribute the Executable version under a different
|
||||
license You must make it absolutely clear that any terms which differ
|
||||
from this License are offered by You alone, not by the Initial
|
||||
Developer or any Contributor. You hereby agree to indemnify the
|
||||
Initial Developer and every Contributor for any liability incurred by
|
||||
the Initial Developer or such Contributor as a result of any such
|
||||
terms You offer.
|
||||
|
||||
3.7. Larger Works.
|
||||
You may create a Larger Work by combining Covered Code with other code
|
||||
not governed by the terms of this License and distribute the Larger
|
||||
Work as a single product. In such a case, You must make sure the
|
||||
requirements of this License are fulfilled for the Covered Code.
|
||||
|
||||
4. Inability to Comply Due to Statute or Regulation.
|
||||
|
||||
If it is impossible for You to comply with any of the terms of this
|
||||
License with respect to some or all of the Covered Code due to
|
||||
statute, judicial order, or regulation then You must: (a) comply with
|
||||
the terms of this License to the maximum extent possible; and (b)
|
||||
describe the limitations and the code they affect. Such description
|
||||
must be included in the LEGAL file described in Section 3.4 and must
|
||||
be included with all distributions of the Source Code. Except to the
|
||||
extent prohibited by statute or regulation, such description must be
|
||||
sufficiently detailed for a recipient of ordinary skill to be able to
|
||||
understand it.
|
||||
|
||||
5. Application of this License.
|
||||
|
||||
This License applies to code to which the Initial Developer has
|
||||
attached the notice in Exhibit A and to related Covered Code.
|
||||
|
||||
6. Versions of the License.
|
||||
|
||||
6.1. New Versions.
|
||||
Netscape Communications Corporation ("Netscape") may publish revised
|
||||
and/or new versions of the License from time to time. Each version
|
||||
will be given a distinguishing version number.
|
||||
|
||||
6.2. Effect of New Versions.
|
||||
Once Covered Code has been published under a particular version of the
|
||||
License, You may always continue to use it under the terms of that
|
||||
version. You may also choose to use such Covered Code under the terms
|
||||
of any subsequent version of the License published by Netscape. No one
|
||||
other than Netscape has the right to modify the terms applicable to
|
||||
Covered Code created under this License.
|
||||
|
||||
6.3. Derivative Works.
|
||||
If You create or use a modified version of this License (which you may
|
||||
only do in order to apply it to code which is not already Covered Code
|
||||
governed by this License), You must (a) rename Your license so that
|
||||
the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
|
||||
"MPL", "NPL" or any confusingly similar phrase do not appear in your
|
||||
license (except to note that your license differs from this License)
|
||||
and (b) otherwise make it clear that Your version of the license
|
||||
contains terms which differ from the Mozilla Public License and
|
||||
Netscape Public License. (Filling in the name of the Initial
|
||||
Developer, Original Code or Contributor in the notice described in
|
||||
Exhibit A shall not of themselves be deemed to be modifications of
|
||||
this License.)
|
||||
|
||||
7. DISCLAIMER OF WARRANTY.
|
||||
|
||||
COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
|
||||
WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
|
||||
DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
|
||||
THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
|
||||
IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
|
||||
YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
|
||||
COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
|
||||
OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
|
||||
ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
|
||||
|
||||
8. TERMINATION.
|
||||
|
||||
8.1. This License and the rights granted hereunder will terminate
|
||||
automatically if You fail to comply with terms herein and fail to cure
|
||||
such breach within 30 days of becoming aware of the breach. All
|
||||
sublicenses to the Covered Code which are properly granted shall
|
||||
survive any termination of this License. Provisions which, by their
|
||||
nature, must remain in effect beyond the termination of this License
|
||||
shall survive.
|
||||
|
||||
8.2. If You initiate litigation by asserting a patent infringement
|
||||
claim (excluding declatory judgment actions) against Initial Developer
|
||||
or a Contributor (the Initial Developer or Contributor against whom
|
||||
You file such action is referred to as "Participant") alleging that:
|
||||
|
||||
(a) such Participant's Contributor Version directly or indirectly
|
||||
infringes any patent, then any and all rights granted by such
|
||||
Participant to You under Sections 2.1 and/or 2.2 of this License
|
||||
shall, upon 60 days notice from Participant terminate prospectively,
|
||||
unless if within 60 days after receipt of notice You either: (i)
|
||||
agree in writing to pay Participant a mutually agreeable reasonable
|
||||
royalty for Your past and future use of Modifications made by such
|
||||
Participant, or (ii) withdraw Your litigation claim with respect to
|
||||
the Contributor Version against such Participant. If within 60 days
|
||||
of notice, a reasonable royalty and payment arrangement are not
|
||||
mutually agreed upon in writing by the parties or the litigation claim
|
||||
is not withdrawn, the rights granted by Participant to You under
|
||||
Sections 2.1 and/or 2.2 automatically terminate at the expiration of
|
||||
the 60 day notice period specified above.
|
||||
|
||||
(b) any software, hardware, or device, other than such Participant's
|
||||
Contributor Version, directly or indirectly infringes any patent, then
|
||||
any rights granted to You by such Participant under Sections 2.1(b)
|
||||
and 2.2(b) are revoked effective as of the date You first made, used,
|
||||
sold, distributed, or had made, Modifications made by that
|
||||
Participant.
|
||||
|
||||
8.3. If You assert a patent infringement claim against Participant
|
||||
alleging that such Participant's Contributor Version directly or
|
||||
indirectly infringes any patent where such claim is resolved (such as
|
||||
by license or settlement) prior to the initiation of patent
|
||||
infringement litigation, then the reasonable value of the licenses
|
||||
granted by such Participant under Sections 2.1 or 2.2 shall be taken
|
||||
into account in determining the amount or value of any payment or
|
||||
license.
|
||||
|
||||
8.4. In the event of termination under Sections 8.1 or 8.2 above,
|
||||
all end user license agreements (excluding distributors and resellers)
|
||||
which have been validly granted by You or any distributor hereunder
|
||||
prior to termination shall survive termination.
|
||||
|
||||
9. LIMITATION OF LIABILITY.
|
||||
|
||||
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
|
||||
(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
|
||||
DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
|
||||
OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
|
||||
ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
|
||||
CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
|
||||
WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
|
||||
COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
|
||||
INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
|
||||
LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
|
||||
RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
|
||||
PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
|
||||
EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
|
||||
THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
10. U.S. GOVERNMENT END USERS.
|
||||
|
||||
The Covered Code is a "commercial item," as that term is defined in
|
||||
48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
|
||||
software" and "commercial computer software documentation," as such
|
||||
terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
|
||||
C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
|
||||
all U.S. Government End Users acquire Covered Code with only those
|
||||
rights set forth herein.
|
||||
|
||||
11. MISCELLANEOUS.
|
||||
|
||||
This License represents the complete agreement concerning subject
|
||||
matter hereof. If any provision of this License is held to be
|
||||
unenforceable, such provision shall be reformed only to the extent
|
||||
necessary to make it enforceable. This License shall be governed by
|
||||
California law provisions (except to the extent applicable law, if
|
||||
any, provides otherwise), excluding its conflict-of-law provisions.
|
||||
With respect to disputes in which at least one party is a citizen of,
|
||||
or an entity chartered or registered to do business in the United
|
||||
States of America, any litigation relating to this License shall be
|
||||
subject to the jurisdiction of the Federal Courts of the Northern
|
||||
District of California, with venue lying in Santa Clara County,
|
||||
California, with the losing party responsible for costs, including
|
||||
without limitation, court costs and reasonable attorneys' fees and
|
||||
expenses. The application of the United Nations Convention on
|
||||
Contracts for the International Sale of Goods is expressly excluded.
|
||||
Any law or regulation which provides that the language of a contract
|
||||
shall be construed against the drafter shall not apply to this
|
||||
License.
|
||||
|
||||
12. RESPONSIBILITY FOR CLAIMS.
|
||||
|
||||
As between Initial Developer and the Contributors, each party is
|
||||
responsible for claims and damages arising, directly or indirectly,
|
||||
out of its utilization of rights under this License and You agree to
|
||||
work with Initial Developer and Contributors to distribute such
|
||||
responsibility on an equitable basis. Nothing herein is intended or
|
||||
shall be deemed to constitute any admission of liability.
|
||||
|
||||
13. MULTIPLE-LICENSED CODE.
|
||||
|
||||
Initial Developer may designate portions of the Covered Code as
|
||||
"Multiple-Licensed". "Multiple-Licensed" means that the Initial
|
||||
Developer permits you to utilize portions of the Covered Code under
|
||||
Your choice of the NPL or the alternative licenses, if any, specified
|
||||
by the Initial Developer in the file described in Exhibit A.
|
||||
|
||||
EXHIBIT A -Mozilla Public License.
|
||||
|
||||
``The contents of this file are subject to the Mozilla Public License
|
||||
Version 1.1 (the "License"); you may not use this file except in
|
||||
compliance with the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS"
|
||||
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
License for the specific language governing rights and limitations
|
||||
under the License.
|
||||
|
||||
The Original Code is ______________________________________.
|
||||
|
||||
The Initial Developer of the Original Code is ________________________.
|
||||
Portions created by ______________________ are Copyright (C) ______
|
||||
_______________________. All Rights Reserved.
|
||||
|
||||
Contributor(s): ______________________________________.
|
||||
|
||||
Alternatively, the contents of this file may be used under the terms
|
||||
of the _____ license (the "[___] License"), in which case the
|
||||
provisions of [______] License are applicable instead of those
|
||||
above. If you wish to allow use of your version of this file only
|
||||
under the terms of the [____] License and not to allow others to use
|
||||
your version of this file under the MPL, indicate your decision by
|
||||
deleting the provisions above and replace them with the notice and
|
||||
other provisions required by the [___] License. If you do not delete
|
||||
the provisions above, a recipient may use your version of this file
|
||||
under either the MPL or the [___] License."
|
||||
|
||||
[NOTE: The text of this Exhibit A may differ slightly from the text of
|
||||
the notices in the Source Code files of the Original Code. You should
|
||||
use the text of this Exhibit A rather than the text found in the
|
||||
Original Code Source Code for Your Modifications.]
|
||||
|
||||
|
||||
You are free to distribute this software under the terms of
|
||||
the MPL Mozilla Public License. On Debian systems, the complete
|
||||
text of the GNU General Public License can be found in the file
|
||||
'/usr/share/common-licenses/MPL'.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
opt/freeswitch/mod/mod_amrwb.so*
|
||||
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
opt/freeswitch/conf/tones.conf
|
||||
opt/freeswitch/conf/autoload_configs/freetdm.conf.xml
|
||||
opt/freeswitch/conf/pika.conf
|
||||
opt/freeswitch/conf/freetdm.conf
|
||||
opt/freeswitch/conf/wanpipe.conf
|
||||
opt/freeswitch/conf/zt.conf
|
||||
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
opt/freeswitch/conf/tones.conf
|
||||
opt/freeswitch/conf/autoload_configs/freetdm.conf.xml
|
||||
opt/freeswitch/conf/pika.conf
|
||||
opt/freeswitch/conf/freetdm.conf
|
||||
opt/freeswitch/conf/wanpipe.conf
|
||||
opt/freeswitch/conf/zt.conf
|
||||
opt/freeswitch/lib/libfreetdm.so*
|
||||
opt/freeswitch/mod/mod_freetdm.so*
|
||||
opt/freeswitch/mod/ftm*.so*
|
||||
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
opt/freeswitch/conf/autoload_configs/python.conf.xml
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
opt/freeswitch/conf/autoload_configs/python.conf.xml
|
||||
opt/freeswitch/mod/mod_python.so*
|
||||
usr/lib/python2.*/*-packages/freeswitch.py*
|
||||
Vendored
-4
@@ -83,10 +83,8 @@
|
||||
/opt/freeswitch/conf/ivr_menus/demo_ivr.xml
|
||||
/opt/freeswitch/conf/jingle_profiles/client.xml
|
||||
/opt/freeswitch/conf/jingle_profiles/server.xml
|
||||
/opt/freeswitch/conf/m3ua.conf
|
||||
/opt/freeswitch/conf/mime.types
|
||||
/opt/freeswitch/conf/notify-voicemail.tpl
|
||||
/opt/freeswitch/conf/pika.conf
|
||||
/opt/freeswitch/conf/sip_profiles/external/example.xml
|
||||
/opt/freeswitch/conf/sip_profiles/external.xml
|
||||
/opt/freeswitch/conf/sip_profiles/internal/example.xml
|
||||
@@ -94,8 +92,6 @@
|
||||
/opt/freeswitch/conf/sip_profiles/internal.xml
|
||||
/opt/freeswitch/conf/skinny_profiles/internal.xml
|
||||
/opt/freeswitch/conf/tetris.ttml
|
||||
/opt/freeswitch/conf/tones.conf
|
||||
/opt/freeswitch/conf/vars.xml
|
||||
/opt/freeswitch/conf/voicemail.tpl
|
||||
/opt/freeswitch/conf/web-vm.tpl
|
||||
/opt/freeswitch/conf/zt.conf
|
||||
|
||||
Vendored
+21
-2
@@ -5,7 +5,7 @@
|
||||
# Required-Stop: $network $local_fs $remote_fs
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: The FreeSwitch Voice Switching System
|
||||
# Short-Description: The FreeSWITCH Voice Switching System
|
||||
# Description: An advanced platform for voice services
|
||||
### END INIT INFO
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
# PATH should only include /usr/* if it runs after the mountnfs.sh script
|
||||
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/opt/freeswitch/bin
|
||||
DESC="FreeSwitch Voice Switching System"
|
||||
DESC="FreeSWITCH Voice Switching System"
|
||||
NAME=freeswitch
|
||||
DAEMON=/opt/freeswitch/bin/$NAME
|
||||
USER=freeswitch
|
||||
@@ -48,6 +48,24 @@ fi
|
||||
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
|
||||
. /lib/lsb/init-functions
|
||||
|
||||
#
|
||||
# Function that sets ulimit values for the daemon
|
||||
#
|
||||
do_setlimits() {
|
||||
ulimit -c unlimited
|
||||
ulimit -d unlimited
|
||||
ulimit -f unlimited
|
||||
ulimit -i unlimited
|
||||
ulimit -n 999999
|
||||
ulimit -q unlimited
|
||||
ulimit -u unlimited
|
||||
ulimit -v unlimited
|
||||
ulimit -x unlimited
|
||||
ulimit -s 240
|
||||
ulimit -l unlimited
|
||||
return 0
|
||||
}
|
||||
|
||||
#
|
||||
# Function that starts the daemon/service
|
||||
#
|
||||
@@ -59,6 +77,7 @@ do_start()
|
||||
# 2 if daemon could not be started
|
||||
start-stop-daemon -d $WORKDIR -c $USER --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
|
||||
|| return 1
|
||||
do_setlimits
|
||||
start-stop-daemon -d $WORKDIR -c $USER --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
|
||||
$FREESWITCH_PARAMS \
|
||||
|| return 2
|
||||
|
||||
Vendored
+18
-20
@@ -1,9 +1,9 @@
|
||||
opt/freeswitch/bin/freeswitch
|
||||
opt/freeswitch/bin/fs_cli
|
||||
opt/freeswitch/bin/fs_encode
|
||||
opt/freeswitch/bin/fs_ivrd
|
||||
opt/freeswitch/bin/fsxs
|
||||
opt/freeswitch/bin/gentls_cert
|
||||
opt/freeswitch/bin/scripts/*
|
||||
opt/freeswitch/conf/autoload_configs/acl.conf.xml
|
||||
opt/freeswitch/conf/autoload_configs/alsa.conf.xml
|
||||
opt/freeswitch/conf/autoload_configs/callcenter.conf.xml
|
||||
@@ -31,7 +31,6 @@ opt/freeswitch/conf/autoload_configs/memcache.conf.xml
|
||||
opt/freeswitch/conf/autoload_configs/modules.conf.xml
|
||||
opt/freeswitch/conf/autoload_configs/nibblebill.conf.xml
|
||||
opt/freeswitch/conf/autoload_configs/opal.conf.xml
|
||||
opt/freeswitch/conf/autoload_configs/openzap.conf.xml
|
||||
opt/freeswitch/conf/autoload_configs/pocketsphinx.conf.xml
|
||||
opt/freeswitch/conf/autoload_configs/portaudio.conf.xml
|
||||
opt/freeswitch/conf/autoload_configs/post_load_modules.conf.xml
|
||||
@@ -91,11 +90,8 @@ opt/freeswitch/conf/fur_elise.ttml
|
||||
opt/freeswitch/conf/ivr_menus/demo_ivr.xml
|
||||
opt/freeswitch/conf/jingle_profiles/client.xml
|
||||
opt/freeswitch/conf/jingle_profiles/server.xml
|
||||
opt/freeswitch/conf/m3ua.conf
|
||||
opt/freeswitch/conf/mime.types
|
||||
opt/freeswitch/conf/notify-voicemail.tpl
|
||||
opt/freeswitch/conf/openzap.conf
|
||||
opt/freeswitch/conf/pika.conf
|
||||
opt/freeswitch/conf/sip_profiles/external/example.xml
|
||||
opt/freeswitch/conf/sip_profiles/external.xml
|
||||
opt/freeswitch/conf/sip_profiles/internal/example.xml
|
||||
@@ -103,69 +99,71 @@ opt/freeswitch/conf/sip_profiles/internal-ipv6.xml
|
||||
opt/freeswitch/conf/sip_profiles/internal.xml
|
||||
opt/freeswitch/conf/skinny_profiles/internal.xml
|
||||
opt/freeswitch/conf/tetris.ttml
|
||||
opt/freeswitch/conf/tones.conf
|
||||
opt/freeswitch/conf/vars.xml
|
||||
opt/freeswitch/conf/voicemail.tpl
|
||||
opt/freeswitch/conf/wanpipe.conf
|
||||
opt/freeswitch/conf/web-vm.tpl
|
||||
opt/freeswitch/conf/zt.conf
|
||||
opt/freeswitch/htdocs/*
|
||||
opt/freeswitch/lib/libfreeswitch*.so*
|
||||
opt/freeswitch/lib/libopenzap*.so*
|
||||
opt/freeswitch/mod/mod_avmd.so*
|
||||
opt/freeswitch/mod/mod_bv.so*
|
||||
opt/freeswitch/mod/mod_callcenter.so*
|
||||
opt/freeswitch/mod/mod_cdr_csv.so*
|
||||
opt/freeswitch/mod/mod_celt.so*
|
||||
opt/freeswitch/mod/mod_cidlookup.so*
|
||||
opt/freeswitch/mod/mod_cluechoo.so*
|
||||
opt/freeswitch/mod/mod_console.so*
|
||||
opt/freeswitch/mod/mod_codec2.so*
|
||||
opt/freeswitch/mod/mod_commands.so*
|
||||
opt/freeswitch/mod/mod_conference.so*
|
||||
opt/freeswitch/mod/mod_console.so*
|
||||
opt/freeswitch/mod/mod_curl.so*
|
||||
opt/freeswitch/mod/mod_db.so*
|
||||
opt/freeswitch/mod/mod_dialplan*.so*
|
||||
opt/freeswitch/mod/mod_dingaling.so*
|
||||
opt/freeswitch/mod/mod_directory.so*
|
||||
opt/freeswitch/mod/mod_distributor.so*
|
||||
opt/freeswitch/mod/mod_dptools.so*
|
||||
opt/freeswitch/mod/mod_easyroute.so*
|
||||
opt/freeswitch/mod/mod_enum.so*
|
||||
opt/freeswitch/mod/mod_esf.so*
|
||||
opt/freeswitch/mod/mod_event_*.so*
|
||||
opt/freeswitch/mod/mod_expr.so*
|
||||
opt/freeswitch/mod/mod_spandsp.so*
|
||||
opt/freeswitch/mod/mod_fifo.so*
|
||||
opt/freeswitch/mod/mod_file_string.so*
|
||||
opt/freeswitch/mod/mod_flite.so*
|
||||
opt/freeswitch/mod/mod_fsv.so*
|
||||
opt/freeswitch/mod/mod_hash.so*
|
||||
opt/freeswitch/mod/mod_h26x.so*
|
||||
opt/freeswitch/mod/mod_ilbc.so*
|
||||
opt/freeswitch/mod/mod_lcr.so*
|
||||
opt/freeswitch/mod/mod_db.so*
|
||||
opt/freeswitch/mod/mod_hash.so*
|
||||
opt/freeswitch/mod/mod_limit.so*
|
||||
opt/freeswitch/mod/mod_local_stream.so*
|
||||
opt/freeswitch/mod/mod_logfile.so*
|
||||
opt/freeswitch/mod/mod_loopback.so*
|
||||
opt/freeswitch/mod/mod_memcache.so*
|
||||
opt/freeswitch/mod/mod_mp4v.so*
|
||||
opt/freeswitch/mod/mod_native_file.so*
|
||||
opt/freeswitch/mod/mod_nibblebill.so*
|
||||
opt/freeswitch/mod/mod_openzap.so
|
||||
opt/freeswitch/mod/mod_portaudio.so*
|
||||
opt/freeswitch/mod/mod_portaudio_stream.so*
|
||||
opt/freeswitch/mod/mod_redis.so*
|
||||
opt/freeswitch/mod/mod_rss.so*
|
||||
opt/freeswitch/mod/mod_shout.so*
|
||||
opt/freeswitch/mod/mod_silk.so*
|
||||
opt/freeswitch/mod/mod_siren.so*
|
||||
opt/freeswitch/mod/mod_skinny.so*
|
||||
opt/freeswitch/mod/mod_skypopen.so*
|
||||
opt/freeswitch/mod/mod_sndfile.so*
|
||||
opt/freeswitch/mod/mod_snom.so*
|
||||
opt/freeswitch/mod/mod_sofia.so*
|
||||
opt/freeswitch/mod/mod_spandsp.so*
|
||||
opt/freeswitch/mod/mod_speex.so*
|
||||
opt/freeswitch/mod/mod_spy.so*
|
||||
opt/freeswitch/mod/mod_syslog.so*
|
||||
opt/freeswitch/mod/mod_theora.so*
|
||||
opt/freeswitch/mod/mod_tone_stream.so*
|
||||
opt/freeswitch/mod/mod_tts_commandline.so*
|
||||
opt/freeswitch/mod/mod_valet_parking.so*
|
||||
opt/freeswitch/mod/mod_vmd.so*
|
||||
opt/freeswitch/mod/mod_voicemail.so*
|
||||
opt/freeswitch/mod/mod_xml_*.so*
|
||||
opt/freeswitch/mod/ozmod_analog_em.so*
|
||||
opt/freeswitch/mod/ozmod_analog.so*
|
||||
opt/freeswitch/mod/ozmod_isdn.so*
|
||||
opt/freeswitch/mod/ozmod_skel.so*
|
||||
opt/freeswitch/mod/ozmod_ss7_boost.so*
|
||||
opt/freeswitch/mod/ozmod_wanpipe.so*
|
||||
opt/freeswitch/mod/ozmod_zt.so*
|
||||
|
||||
Vendored
+8
-1
@@ -24,9 +24,16 @@ case "$1" in
|
||||
if ! getent passwd freeswitch >/dev/null; then
|
||||
adduser --disabled-password --quiet --system \
|
||||
--home /opt/freeswitch \
|
||||
--gecos "FreeSwitch Voice Platform" --ingroup daemon \
|
||||
--gecos "FreeSWITCH Voice Platform" --ingroup daemon \
|
||||
freeswitch
|
||||
adduser freeswitch audio
|
||||
else
|
||||
if [ "$(getent passwd freeswitch | cut -d : -f 6)" != "/opt/freeswitch" ]; then
|
||||
echo "Error: pre-existing freeswitch user with non-standard home directory." >&2
|
||||
exit 1
|
||||
fi
|
||||
usermod -d /opt/freeswitch -c "FreeSWITCH daemon,,," \
|
||||
-g daemon -G audio freeswitch
|
||||
fi
|
||||
|
||||
mkdir -p /opt/freeswitch
|
||||
|
||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
||||
#!/bin/sh
|
||||
# postrm script for openfire
|
||||
# postrm script for freeswitch
|
||||
#
|
||||
# see: dh_installdeb(1)
|
||||
|
||||
|
||||
Vendored
+146
-44
@@ -1,40 +1,40 @@
|
||||
#!/usr/bin/make -f
|
||||
# Sample debian/rules that uses debhelper.
|
||||
# This file is public domain software, originally written by Joey Hess.
|
||||
|
||||
# Uncomment this to turn on verbose mode.
|
||||
export DH_VERBOSE=1
|
||||
export DH_OPTIONS
|
||||
export DEB_DH_INSTALL_SOURCEDIR=debian/tmp
|
||||
export PASSTHRU_CODEC_MODULES=codecs/mod_g729 codecs/mod_g723_1 codecs/mod_amr
|
||||
export PASSTHRU_CODEC_MODULES=codecs/mod_g729 codecs/mod_g723_1 codecs/mod_amr codecs/mod_amrwb
|
||||
# Modules listed by those built by default, then those that are added in this package
|
||||
export APPLICATIONS_MODULES=applications/mod_cluechoo applications/mod_commands applications/mod_conference applications/mod_dptools \
|
||||
applications/mod_enum applications/mod_esf applications/mod_expr applications/mod_fifo applications/mod_fsv \
|
||||
applications/mod_hash applications/mod_db applications/mod_valet_parking applications/mod_voicemail applications/mod_rss \
|
||||
applications/mod_spandsp applications/mod_cidlookup applications/mod_curl applications/mod_easyroute \
|
||||
applications/mod_lcr applications/mod_nibblebill applications/mod_snom \
|
||||
applications/mod_spy applications/mod_vmd applications/mod_directory applications/mod_callcenter
|
||||
export ASR_TTS_MODULES=asr_tts/mod_tts_commandline
|
||||
export CODECS_MODULES=codecs/mod_ilbc codecs/mod_h26x codecs/mod_speex codecs/mod_siren codecs/mod_celt
|
||||
export DIALPLANS_MODULES=dialplans/mod_dialplan_asterisk dialplans/mod_dialplan_directory dialplans/mod_dialplan_xml
|
||||
export DIRECTORIES_MODULES=
|
||||
export DOTNET_MODULES=
|
||||
export ENDPOINTS_MODULES=endpoints/mod_dingaling endpoints/mod_portaudio endpoints/mod_sofia \
|
||||
endpoints/mod_loopback ../../libs/openzap/mod_openzap endpoints/mod_skypopen \
|
||||
endpoints/mod_skinny
|
||||
export APPLICATION_MODULES_AE= applications/mod_avmd applications/mod_callcenter applications/mod_cidlookup applications/mod_cluechoo \
|
||||
applications/mod_commands applications/mod_conference applications/mod_curl applications/mod_db applications/mod_directory \
|
||||
applications/mod_distributor applications/mod_dptools applications/mod_easyroute applications/mod_enum \
|
||||
applications/mod_esf applications/mod_expr
|
||||
export APPLICATION_MODULES_FM= applications/mod_fifo applications/mod_fsv applications/mod_hash applications/mod_lcr applications/mod_limit \
|
||||
applications/mod_memcache
|
||||
export APPLICATION_MODULES_NY= applications/mod_nibblebill applications/mod_redis applications/mod_rss applications/mod_snom \
|
||||
applications/mod_spandsp applications/mod_spy applications/mod_stress \
|
||||
applications/mod_valet_parking applications/mod_vmd applications/mod_voicemail
|
||||
|
||||
export APPLICATIONS_MODULES= $(APPLICATION_MODULES_AE) $(APPLICATION_MODULES_FM) $(APPLICATION_MODULES_NY) $(APPLICATION_MODULES_VZ)
|
||||
export ASR_TTS_MODULES= asr_tts/mod_pocketsphinx asr_tts/mod_flite asr_tts/mod_tts_commandline
|
||||
export CODECS_MODULES= codecs/mod_bv codecs/mod_h26x codecs/mod_speex codecs/mod_celt codecs/mod_codec2 codecs/mod_ilbc codecs/mod_mp4v \
|
||||
codecs/mod_silk codecs/mod_siren codecs/mod_theora
|
||||
export DIALPLANS_MODULES= dialplans/mod_dialplan_asterisk dialplans/mod_dialplan_directory dialplans/mod_dialplan_xml
|
||||
export ENDPOINTS_MODULES= endpoints/mod_dingaling endpoints/mod_portaudio endpoints/mod_sofia endpoints/mod_loopback \
|
||||
../../libs/freetdm/mod_freetdm endpoints/mod_skypopen endpoints/mod_skinny
|
||||
export EVENT_HANDLERS_MODULES=event_handlers/mod_event_multicast event_handlers/mod_event_socket event_handlers/mod_cdr_csv
|
||||
export FORMATS_MODULES=formats/mod_local_stream formats/mod_native_file formats/mod_sndfile formats/mod_tone_stream formats/mod_shout
|
||||
export FORMATS_MODULES= formats/mod_file_string formats/mod_local_stream formats/mod_native_file formats/mod_portaudio_stream \
|
||||
formats/mod_shout formats/mod_sndfile formats/mod_tone_stream
|
||||
export LANGUAGES_MODULES=languages/mod_spidermonkey languages/mod_perl languages/mod_lua languages/mod_python
|
||||
export LOGGERS_MODULES=loggers/mod_console loggers/mod_logfile loggers/mod_syslog
|
||||
export SAY_MODULES=say/mod_say_en say/mod_say_it say/mod_say_de say/mod_say_fr say/mod_say_es say/mod_say_nl say/mod_say_ru
|
||||
export TIMERS_MODULES=
|
||||
export DISABLED_MODULES=applications/mod_memcache applications/mod_soundtouch directories/mod_ldap languages/mod_java \
|
||||
asr_tts/mod_cepstral asr_tts/mod_lumenvox endpoints/mod_wanpipe \
|
||||
event_handlers/mod_event_test event_handlers/mod_radius_cdr event_handlers/mod_zeroconf
|
||||
export XML_INT_MODULES=xml_int/mod_xml_rpc xml_int/mod_xml_curl xml_int/mod_xml_cdr
|
||||
export MYMODULES=$(PASSTHRU_CODEC_MODULES) $(APPLICATIONS_MODULES) $(ASR_TTS_MODULES) $(CODECS_MODULES) $(DIALPLANS_MODULES) $(DIRECTORIES_MODULES) $(DOTNET_MODULES) $(ENDPOINTS_MODULES) $(EVENT_HANDLERS_MODULES) $(FORMATS_MODULES) $(LANGUAGES_MODULES) $(LOGGERS_MODULES) $(SAY_MODULES) $(TIMERS_MODULES) $(XML_INT_MODULES)
|
||||
export MYMODULES= $(PASSTHRU_CODEC_MODULES) $(APPLICATIONS_MODULES) $(ASR_TTS_MODULES) $(CODECS_MODULES) $(DIALPLANS_MODULES) $(ENDPOINTS_MODULES) $(EVENT_HANDLERS_MODULES) $(FORMATS_MODULES) $(LANGUAGES_MODULES) $(LOGGERS_MODULES) $(SAY_MODULES) $(XML_INT_MODULES)
|
||||
export MODULES=$(MYMODULES)
|
||||
|
||||
|
||||
|
||||
ifndef AUTOCONF
|
||||
AUTOCONFS := $(wildcard /usr/bin/autoconf*)
|
||||
AUTOCONF = $(shell which autoconf)
|
||||
@@ -57,6 +57,116 @@ ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
|
||||
FEATURES += --disable-optimization
|
||||
endif
|
||||
|
||||
.pc/applied-patches:
|
||||
@echo
|
||||
@echo \ \ Sorry, currently this package cannot be built directly from upstream
|
||||
@echo \ \ source git/tarball: patches are needed for policy compliance, and the
|
||||
@echo \ \ "new 3.0 (quilt) source format requires patches to be already applied."
|
||||
@echo
|
||||
@echo \ \ Please first convert this tree by running:
|
||||
@echo -e \\t./debian/rules upstream-convert
|
||||
@echo
|
||||
@echo \ \ Note that this will insert an entry in debian/changelog, rename the
|
||||
@echo \ \ current directory to the version number there, create a .orig.tar.bz2
|
||||
@echo \ \ archive and apply all the patches in debian/patches/series.
|
||||
@echo
|
||||
@echo \ \ Using git-buildpackage is not recommended for now.
|
||||
@echo
|
||||
@exit 1
|
||||
|
||||
upstream-convert:
|
||||
@dh_testdir
|
||||
@test -s .pc/applied-patches && \
|
||||
echo "Aborted: patches are already applied." && \
|
||||
exit 1 || exit 0
|
||||
# update (or not) version number in debian/changelog
|
||||
@set -e ; \
|
||||
echo Checking version number ; \
|
||||
v1="$$(dpkg-parsechangelog | sed -e '/^Version: / ! d' -e 's/^Version: //')" ; \
|
||||
v2="$${v1}" ; \
|
||||
echo " Current version: $${v1}" ; \
|
||||
if [ "$$(which git)" = "" -o ! -d .git ] ; then \
|
||||
echo Git not available. Keeping current version number. ; \
|
||||
exit 0 ; \
|
||||
fi ; \
|
||||
if [ "$$(which debchange)" = "" ] ; then \
|
||||
echo debchange not available. Keeping current version number. ; \
|
||||
exit 0 ; \
|
||||
fi ; \
|
||||
if echo -n "$${v1}" | grep -q '~git\.[a-z0-9]\+\.20[0-9]\{6\}\.[0-9]\+-[^-]\+$$' ; then \
|
||||
maj1="$$(echo -n "$${v1}" | sed -e 's/^\([^.]\+\)\..*$$/\1/')" ; \
|
||||
min1="$$(echo -n "$${v1}" | sed -e 's/^[^.]\+\.\([^.]\+\)\..*$$/\1/')" ; \
|
||||
mic1="$$(echo -n "$${v1}" | sed -e 's/^[^.]\+\.[^.]\+\.\([a-zA-Z0-9]\+\).*$$/\1/')" ; \
|
||||
b1="$$(echo -n "$${v1}" | sed -e 's/^.*~git\.\([a-z0-9]\+\)\.\(20[0-9]\{6\}\)\.[0-9]\+-[^-]\+$$/\1/')" ; \
|
||||
d1="$$(echo -n "$${v1}" | sed -e 's/^.*\.\(20[0-9]\{6\}\)\.[0-9]\+-[^-]\+$$/\1/')" ; \
|
||||
n1="$$(echo -n "$${v1}" | sed -e 's/^.*\.20[0-9]\{6\}\.\([0-9]\+\)-[^-]\+$$/\1/')" ; \
|
||||
maj2="$$(sed -e '/^AC_SUBST(SWITCH_VERSION_MAJOR/ ! d' -e 's/^.*\[\([^\[]\+\)\][^\]]*$$/\1/' configure.in)" ; \
|
||||
min2="$$(sed -e '/^AC_SUBST(SWITCH_VERSION_MINOR/ ! d' -e 's/^.*\[\([^\[]\+\)\][^\]]*$$/\1/' configure.in)" ; \
|
||||
mic2="$$(sed -e '/^AC_SUBST(SWITCH_VERSION_MICRO/ ! d' -e 's/^.*\[\([^\[]\+\)\][^\]]*$$/\1/' configure.in)" ; \
|
||||
b2="$$(git branch | sed -e '/^[^*]/ d' -e 's/* \(.*\)/\1/')" ; \
|
||||
d2="$$(TZ=UTC git log --date=local -1 --format='%ai' | sed -e 's/^\(....\).\(..\).\(..\).*$$/\1\2\3/')" ; \
|
||||
n2="$$(TZ=UTC git log --date=local --format=oneline --since="$${d2::4}-$${d2:4:2}-$${d2:6:2} 00:00" | wc -l)" ; \
|
||||
if [ "$${b2}" != "$$(echo "$${b2}" | tr -dc a-z0-9)" ] ; then \
|
||||
echo Invalid branch name "'$${b2}'". Aborted. ; \
|
||||
exit 1; \
|
||||
fi ; \
|
||||
if [ "$${b1}.$${d1}.$${n1}" != "$${b2}.$${d2}.$${n2}" \
|
||||
-o "$${maj1}.$${min1}.$${mic1}" != "$${maj2}.$${min2}.$${mic2}" ] ; then \
|
||||
v2="$$(echo -n "$${maj2}.$${min2}.$${mic2}")" ; \
|
||||
v2="$${v2}$$(echo -n "$${v1}" | sed -e 's/^[^.]\+\.[^.]\+\.[^.]\+\(.*\)~git\..*$$/\1/')" ; \
|
||||
v2="$${v2}~git.$${b2}.$${d2}.$${n2}-1" ; \
|
||||
echo " New version: $${v2}" ; \
|
||||
echo Updating debian/changelog with new version number ; \
|
||||
debchange -v "$${v2}" "New upstream release" ; \
|
||||
else \
|
||||
echo Version number already correct, no change. ; \
|
||||
fi ; \
|
||||
else \
|
||||
echo 'Not a ~git. version number. Keeping current version number.' ; \
|
||||
fi
|
||||
# rename (or not) current directory to match packagename-version.number
|
||||
@set -e ; \
|
||||
echo Checking directory name ; \
|
||||
d1="$$(basename "$$(cd . && echo "$$PWD")")" ; \
|
||||
d2="$$(dpkg-parsechangelog | sed -e '/^Source: / ! d' -e 's/^Source: //')" ; \
|
||||
d2="$${d2}-$$(dpkg-parsechangelog | sed -e '/^Version: / ! d' -e 's/^Version: \(.*\)-[^-]\+$$/\1/')" ; \
|
||||
if [ "$${d1}" != "$${d2}" ] ; then \
|
||||
if [ -e "../$${d2}" ] ; then \
|
||||
test . -ef "../$${d2}" && exit 0 ; \
|
||||
echo Aborted: directory "../$${d2}" already exists. ; \
|
||||
exit 1 ; \
|
||||
fi ; \
|
||||
echo Renaming current directory to "$${d2}" ; \
|
||||
mv ../$${d1} ../$${d2} ; \
|
||||
fi
|
||||
# create .orig.tar.bz2
|
||||
@set -e ; \
|
||||
n="$$(dpkg-parsechangelog | sed -e '/^Source: / ! d' -e 's/^Source: //')" ; \
|
||||
d="$${n}-$$(dpkg-parsechangelog | sed -e '/^Version: / ! d' -e 's/^Version: \(.*\)-[^-]\+$$/\1/')" ; \
|
||||
n="$${n}_$$(dpkg-parsechangelog | sed -e '/^Version: / ! d' -e 's/^Version: \(.*\)-[^-]\+$$/\1/').orig.tar.bz2" ; \
|
||||
echo "Creating source archive $${n}" ; \
|
||||
cd .. && tar cjf "$${n}" --exclude='.git*' "$${d}"
|
||||
# apply patches
|
||||
@set -e ; \
|
||||
echo "Applying patches in debian/patches/series" ; \
|
||||
QUILT_PATCHES=debian/patches ; \
|
||||
export QUILT_PATCHES ; \
|
||||
while quilt next ; do \
|
||||
quilt push -v ; \
|
||||
quilt refresh ; \
|
||||
done
|
||||
# remind user to change dir
|
||||
@echo Done.
|
||||
@echo
|
||||
@if [ "$(CURDIR)" != "$$PWD" ] ; then \
|
||||
echo \ \ You should now tell your shell to update its current working directory: ; \
|
||||
echo -e \\t'cd $$(pwd)' ; \
|
||||
echo \ \ or ; \
|
||||
echo -e "\\tcd $$PWD" ; \
|
||||
echo ; \
|
||||
fi
|
||||
|
||||
|
||||
config.status: configure
|
||||
dh_testdir
|
||||
rm -f modules.conf
|
||||
@@ -65,15 +175,12 @@ config.status: configure
|
||||
for i in $(MODULES); do echo $$i >> modules.conf; done
|
||||
./configure --prefix=/opt/freeswitch --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) ${FEATURES}
|
||||
|
||||
configure:
|
||||
if test ! -f Makefile.in ; then \
|
||||
if test -f ./bootstrap.sh ; then \
|
||||
AUTOCONF=${AUTOCONF} ./bootstrap.sh ; \
|
||||
else \
|
||||
echo "No Makefile.in and no known way to bootstrap." ; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
fi;
|
||||
configure: bootstrap.sh # .pc/applied-patches
|
||||
dh_testdir
|
||||
test -e /usr/share/misc/config.sub && cp -f /usr/share/misc/config.sub build/config/config.sub
|
||||
test -e /usr/share/misc/config.guess && cp -f /usr/share/misc/config.guess build/config/config.guess
|
||||
AUTOCONF=${AUTOCONF} ./bootstrap.sh
|
||||
|
||||
|
||||
build: build-stamp
|
||||
build-stamp: config.status
|
||||
@@ -83,19 +190,13 @@ build-stamp: config.status
|
||||
|
||||
touch $@
|
||||
|
||||
clean:
|
||||
clean: # .pc/applied-patches
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
rm -f build-stamp
|
||||
|
||||
-$(MAKE) update-clean
|
||||
ifneq "$(wildcard /usr/share/misc/config.sub)" ""
|
||||
cp -f /usr/share/misc/config.sub build/config/config.sub
|
||||
endif
|
||||
ifneq "$(wildcard /usr/share/misc/config.guess)" ""
|
||||
cp -f /usr/share/misc/config.guess build/config/config.guess
|
||||
endif
|
||||
rm -f config.status
|
||||
rm -f configure config.status
|
||||
rm -f */*/config.status
|
||||
rm -f */*/*/config.status
|
||||
dh_clean
|
||||
@@ -103,8 +204,8 @@ endif
|
||||
install: build
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
dh_clean -k
|
||||
dh_installdirs -A --sourcedir=debian/tmp
|
||||
dh_prep
|
||||
dh_installdirs -A
|
||||
|
||||
VERBOSE=1 $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
|
||||
|
||||
@@ -123,11 +224,12 @@ binary-arch: build install
|
||||
cp debian/monit/freeswitch.monitrc debian/freeswitch/etc/monit/freeswitch.monitrc
|
||||
dh_install --sourcedir=debian/tmp
|
||||
dh_link
|
||||
dh_strip --dbg-package=freeswitch
|
||||
dh_strip --dbg-package=freeswitch-dbg
|
||||
dh_compress
|
||||
dh_fixperms --exclude /opt/freeswitch/conf
|
||||
dh_makeshlibs
|
||||
dh_shlibdeps
|
||||
dh_installdeb
|
||||
dh_shlibdeps --exclude=/opt/freeswitch
|
||||
dh_gencontrol
|
||||
dh_md5sums
|
||||
dh_builddeb
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
freeswitch-sounds-en-us-callie (1.0.head-git.master,20101014.1-1) unstable; urgency=low
|
||||
|
||||
* Change upstream package version numbering scheme for unreleased versions:
|
||||
new format is major.minor.micro~git.branch.date.commits-1
|
||||
* Change source format to 3.0 (quilt).
|
||||
* Upgrade debhelper compatibility to version 7.
|
||||
|
||||
-- Michal Bielicki <michal.bielicki@seventhsignal.de> Fr, 14 Oct 2010 05:05:02 +0200
|
||||
|
||||
freeswitch-sounds-en-us-callie (1.0.12-0ubuntu1) jaunty; urgency=low
|
||||
|
||||
* Initial: This is the initial working build of the en-us-callie sounds
|
||||
|
||||
@@ -2,8 +2,9 @@ Source: freeswitch-sounds-en-us-callie
|
||||
Maintainer: Freeswitch Debian Team <debian@freeswitch.org>
|
||||
Section: net
|
||||
Priority: extra
|
||||
Build-Depends: debhelper (>= 5), fakeroot, sox
|
||||
Standards-Version: 3.7.3
|
||||
Build-Depends: debhelper (>= 7), sox
|
||||
Homepage: http://www.freeswitch.org/
|
||||
Standards-Version: 3.8.4
|
||||
|
||||
Package: freeswitch-sounds-en-us-callie-8000
|
||||
Architecture: all
|
||||
@@ -47,14 +48,18 @@ Description: English language sounds for the FreeSWITCH(TM) (48000)
|
||||
Package: freeswitch-sounds-en-us-callie
|
||||
Architecture: all
|
||||
Depends: sox, freeswitch-sounds-en-us-callie-48000
|
||||
Conflicts: freeswitch-sounds-en-us-callie-omega, freeswitch-sounds-en-us-callie-8000, freeswitch-sounds-en-us-callie-16000, freeswitch-sounds-en-us-callie-32000
|
||||
Conflicts: freeswitch-sounds-en-us-callie-omega,
|
||||
freeswitch-sounds-en-us-callie-8000, freeswitch-sounds-en-us-callie-16000,
|
||||
freeswitch-sounds-en-us-callie-32000
|
||||
Description: English language files for FreeSWITCH(TM)
|
||||
This package generates the 8k, 16k, and 32k from the installed 48k
|
||||
sounds. You can select which ones you want.
|
||||
|
||||
Package: freeswitch-sounds-en-us-callie-omega
|
||||
Architecture: all
|
||||
Depends: freeswitch-sounds-en-us-callie-48000, freeswitch-sounds-en-us-callie-32000, freeswitch-sounds-en-us-callie-16000, freeswitch-sounds-en-us-callie-8000
|
||||
Depends: freeswitch-sounds-en-us-callie-48000,
|
||||
freeswitch-sounds-en-us-callie-32000, freeswitch-sounds-en-us-callie-16000,
|
||||
freeswitch-sounds-en-us-callie-8000
|
||||
Conflicts: freeswitch-sounds-en-us-callie
|
||||
Description: English language files for FreeSWITCH(TM)
|
||||
This package depends on the pregenerated 8khz, 16khz, 32khz, and 48khz sounds
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
freeswitch-sounds-music (1.0.head-git.master,20101014.1-1) unstable; urgency=low
|
||||
|
||||
* Change upstream package version numbering scheme for unreleased versions:
|
||||
new format is major.minor.micro~git.branch.date.commits-1
|
||||
* Change source format to 3.0 (quilt).
|
||||
* Upgrade debhelper compatibility to version 7.
|
||||
|
||||
-- Michal Bielicki <michal.bielicki@seventhsignal.de> Fr, 14 Oct 2010 05:05:02 +0200
|
||||
|
||||
freeswitch-sounds-music (1.0.8-0ubuntu3) jaunty; urgency=low
|
||||
|
||||
* Fixed: empty binary files for some packages
|
||||
|
||||
+10
-5
@@ -1,9 +1,10 @@
|
||||
Source: freeswitch-sounds-music
|
||||
Maintainer: Freeswitch Debian Team <debian@freeswitch.org>
|
||||
Maintainer: Freeswitch development Team <freeswitch-dev@freeswitch.org>
|
||||
Section: net
|
||||
Priority: extra
|
||||
Build-Depends: debhelper (>= 5), fakeroot, sox
|
||||
Standards-Version: 3.7.3
|
||||
Build-Depends: debhelper (>= 7), sox
|
||||
Homepage: http://www.freeswitch.org/
|
||||
Standards-Version: 3.8.4
|
||||
|
||||
Package: freeswitch-sounds-music-8000
|
||||
Architecture: all
|
||||
@@ -47,14 +48,18 @@ Description: music for FreeSWITCH(TM) (48000)
|
||||
Package: freeswitch-sounds-music
|
||||
Architecture: all
|
||||
Depends: sox, freeswitch-sounds-music-48000
|
||||
Conflicts: freeswitch-sounds-music-omega, freeswitch-sounds-music-8000, freeswitch-sounds-music-16000, freeswitch-sounds-music-32000
|
||||
Conflicts: freeswitch-sounds-music-omega,
|
||||
freeswitch-sounds-music-8000, freeswitch-sounds-music-16000,
|
||||
freeswitch-sounds-music-32000
|
||||
Description: Music for FreeSWITCH(TM)
|
||||
This package generates the 8k, 16k, and 32k from the installed 48k
|
||||
sounds. You can select which ones you want.
|
||||
|
||||
Package: freeswitch-sounds-music-omega
|
||||
Architecture: all
|
||||
Depends: freeswitch-sounds-music-48000, freeswitch-sounds-music-32000, freeswitch-sounds-music-16000, freeswitch-sounds-music-8000
|
||||
Depends: freeswitch-sounds-music-48000,
|
||||
freeswitch-sounds-music-32000, freeswitch-sounds-music-16000,
|
||||
freeswitch-sounds-music-8000
|
||||
Conflicts: freeswitch-sounds-music
|
||||
Description: Music for FreeSWITCH(TM)
|
||||
This package depends on the pregenerated 8khz, 16khz, 32khz, and 48khz sounds
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
freeswitch-sounds-ru-ru-elena (1.0.head-git.master,20101014.1-1) unstable; urgency=low
|
||||
|
||||
* Change upstream package version numbering scheme for unreleased versions:
|
||||
new format is major.minor.micro~git.branch.date.commits-1
|
||||
* Change source format to 3.0 (quilt).
|
||||
* Upgrade debhelper compatibility to version 7.
|
||||
|
||||
-- Michal Bielicki <michal.bielicki@seventhsignal.de> Fr, 14 Oct 2010 05:05:02 +0200
|
||||
|
||||
freeswitch-sounds-ru-ru-elena (1.0.12-0ubuntu3) jaunty; urgency=low
|
||||
|
||||
* Fixed: Empty binary package bug caused by the second ru folder being
|
||||
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
3.0 (quilt)
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
shlibs:Depends=libc6 (>= 2.3.6-6), libdb4.4, libgcc1 (>= 1:4.1.1-12), libsasl2-2, libssl0.9.8 (>= 0.9.8c-1), libstdc++6 (>= 4.1.1-12), libuuid1, zlib1g (>= 1:1.2.1)
|
||||
|
||||
@@ -384,14 +384,14 @@
|
||||
<prompt phrase="Good morning." filename="ivr-good_morning.wav"/>
|
||||
<prompt phrase="Good afternoon." filename="ivr-good_afternoon.wav"/>
|
||||
<prompt phrase="Good evening." filename="ivr-good_evening.wav"/>
|
||||
<prompt phrase="Thank you." filename="ivr-Thank you.wav"/>
|
||||
<prompt phrase="Thank you." filename="ivr-Thank_you.wav"/>
|
||||
<prompt phrase="For..." filename="ivr-for.wav"/>
|
||||
<prompt phrase="We are experiencing longer than usual hold times." filename="ivr-longer_than_usual_hold_times.wav"/>
|
||||
<prompt phrase="You are the..." filename="ivr-you_are_the.wav"/>
|
||||
<prompt phrase="One moment please." filename="ivr-one_moment_please.wav"/>
|
||||
<prompt phrase="Your call will be answered in the order it was received." filename="ivr-call_answered_order_received.wav"/>
|
||||
<prompt phrase="Please enter the conference number, followed by the pound key" filename="conf-enter_conf_number.wav"/>
|
||||
<prompt phrase="Enter the conference PIN number, followed by the pound key." filename="ivr-enter_conf_pin.wav"/>
|
||||
<prompt phrase="Enter the conference PIN number, followed by the pound key." filename="conf-enter_conf_pin.wav"/>
|
||||
<prompt phrase="...has entered the conference." filename="conf-has_joined.wav"/>
|
||||
<prompt phrase="...has left the conference." filename="conf-has_left.wav"/>
|
||||
<prompt phrase="You entered..." filename="ivr-you_entered.wav"/>
|
||||
@@ -403,27 +403,30 @@
|
||||
<prompt phrase="If this is correct, press 1. If not, press 2." filename="ivr-if_correct_one_if_not_two.wav"/>
|
||||
<prompt phrase="To repeat this information..." filename="ivr-repeat_this_information.wav"/>
|
||||
<prompt phrase="No no no!" filename="ivr-no_no_no.wav"/>
|
||||
<prompt phrase="Do you mean to press that key?" filename="ivr-did_you_mean_to_press_key.wav"/>
|
||||
<prompt phrase="Did you mean to press that key?" filename="ivr-did_you_mean_to_press_key.wav"/>
|
||||
<prompt phrase="Seriously. Did you REALLY mean to press that key?" filename="ivr-seriously_mean_to_press_key.wav"/>
|
||||
<prompt phrase="Oh what-EVER." filename="ivr-oh_whatever.wav"/>
|
||||
<prompt phrase="That's it! One more mistake and I WILL hang up on your ass." filename="ivr-one_more_mistake.wav"/>
|
||||
<prompt phrase="Congratulations, you pressed star. This does not mean you ARE a star. It simply means that you can press buttons and probably have fingers." filename="ivr-congratulations_you_pressed_star.wav"/>
|
||||
<prompt phrase="All of our engineers are busy assisting other sales guys with demonstrating how cool the CudaTel is. Please stay on the line and your call will be answered in the order it was received." filename="ivr-engineers_busy_assisting_other_sales.wav"/>
|
||||
<prompt phrase="All of our engineers are busy assisting other sales guys with demonstrating how cool the CudaTel is." filename="ivr-engineers_busy_assisting_other_sales.wav"/>
|
||||
<prompt phrase="The person you are trying to reach is not available and does not have voicemail." filename="vm-not_available_no_voicemail.wav"/>
|
||||
<prompt phrase="This message will self-destruct in 5, 4, 3, 2, 1..." filename="ivr-message_self_destruct.wav"/>
|
||||
<prompt phrase="You are already muted." filename="conf-you_are_already_muted.wav"/>
|
||||
<prompt phrase="You are now bi-directionally muted." filename="conf-you_are_now_bidirectionally_muted.wav"/>
|
||||
<prompt phrase="All your call are belong to us." filename="ivr-all_your_call_are_belong_to_us.wav"/>
|
||||
<prompt phrase="I just love the way you press those touch tones!" filename="ivr-love_those_touch_tones.wav"/>
|
||||
<prompt phrase="Yes we have no bananas." filename="ivr-yes_we_have_no_bananas.wav"/>
|
||||
<prompt phrase="Yes, we have no bananas." filename="ivr-yes_we_have_no_bananas.wav"/>
|
||||
<prompt phrase="Dude, you suck!" filename="ivr-dude_you_suck.wav"/>
|
||||
<prompt phrase="Your call is very important to us, but your sanity is not, so we will be happy to keep you on hold, forever torturing you with our annoying hold music." filename="ivr-on_hold_indefinitely.wav"/>
|
||||
<prompt phrase="...has left the building." filename="ivr-has_left_the_building.wav"/>
|
||||
<prompt phrase="This phone is unassigned and may not be used to make external calls." filename="ivr-phone_is_unassigned.wav"/>
|
||||
<prompt phrase="This phone is not configured properly." filename="ivr-phone_not_configured.wav"/>
|
||||
<prompt phrase="Congratulations! This phone is configured properly and may now be assigned to a user." filename="ivr-phone_is_configured_properly.wav"/>
|
||||
<prompt phrase="Please contact the system administrator for assistance." filename="ivr-contact_system_administrator.wav"/>
|
||||
<prompt phrase="Barracuda Networks" filename="ivr-barracuda_networks.wav"/>
|
||||
<prompt phrase="CudaTel Communication Server" filename="ivr-cudatel_communication_server.wav"/>
|
||||
<prompt phrase="Please enter the first few letters of the person's first or last name" filename="dir-enter_person_first_or_last.wav"/>
|
||||
<prompt phrase="There are no calls waiting in this queue." filename="ivr-no_calls_waiting_in_queue.wav"/>
|
||||
<prompt phrase="Brian West" filename="misc-Brian_West.wav"/>
|
||||
<prompt phrase="Anthony Minessale" filename="misc-Anthony_Minessale.wav"/>
|
||||
<prompt phrase="Michael Jerris" filename="misc-Michael_Jerris.wav"/>
|
||||
@@ -435,7 +438,7 @@
|
||||
<prompt phrase="Andrew Thompson" filename="misc-Andrew_Thompson.wav"/>
|
||||
<prompt phrase="Graham Saathoff" filename="misc-Graham_Saathoff.wav"/>
|
||||
<prompt phrase="Nicholaus Belluni" filename="misc-Nicholaus_Belluni.wav"/>
|
||||
<prompt phrase="Sean Heiney" filename="misc-Sean_Heiney.wav">
|
||||
<prompt phrase="Sean Heiney" filename="misc-Sean_Heiney.wav"/>
|
||||
</ivr>
|
||||
<misc>
|
||||
<prompt phrase="This call has been secured" filename="call_secured.wav"/>
|
||||
|
||||
+4
-1
@@ -331,7 +331,7 @@ export QA_RPATHS=$[ 0x0001|0x0002 ]
|
||||
#
|
||||
######################################################################################################################
|
||||
APPLICATION_MODULES_AE="applications/mod_avmd applications/mod_callcenter applications/mod_cidlookup applications/mod_cluechoo \
|
||||
applications/mod_commands applications/mod_conference applications/mod_db applications/mod_directory \
|
||||
applications/mod_commands applications/mod_conference applications/mod_curl applications/mod_db applications/mod_directory \
|
||||
applications/mod_distributor applications/mod_dptools applications/mod_easyroute applications/mod_enum \
|
||||
applications/mod_esf applications/mod_expr"
|
||||
APPLICATION_MODULES_FM="applications/mod_fifo applications/mod_fsv applications/mod_hash applications/mod_lcr applications/mod_limit \
|
||||
@@ -753,6 +753,7 @@ fi
|
||||
%{prefix}/mod/mod_console.so*
|
||||
%{prefix}/mod/mod_commands.so*
|
||||
%{prefix}/mod/mod_conference.so*
|
||||
%{prefix}/mod/mod_curl.so*
|
||||
%{prefix}/mod/mod_db.so*
|
||||
%{prefix}/mod/mod_dialplan_asterisk.so*
|
||||
%{prefix}/mod/mod_dialplan_directory.so*
|
||||
@@ -949,6 +950,8 @@ fi
|
||||
#
|
||||
######################################################################################################################
|
||||
%changelog
|
||||
* Fri Oct 15 2010 - michal.bielicki@seventhsignal.de
|
||||
- added mod_curl
|
||||
* Sat Oct 09 2010 - michal.bielicki@seventhsignal.de
|
||||
- added mod_silk
|
||||
- added mod_codec2
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
LOCAL_CFLAGS=-I../src/include -I/usr/java/jdk1.6.0_14/include -I/usr/java/jdk1.6.0_14/include/linux
|
||||
LOCAL_CFLAGS=-I../src/include -I/usr/java/jdk1.6.0_14/include -I/usr/java/jdk1.6.0_14/include/linux -I/usr/lib/jvm/java-6-openjdk/include/
|
||||
GCC_WARNING_JUNK=-w
|
||||
CLASSES=org/freeswitch/esl/*
|
||||
|
||||
|
||||
@@ -11,6 +11,20 @@ config.*
|
||||
configure
|
||||
libtool
|
||||
aclocal.m4
|
||||
build/libtool.m4
|
||||
build/ltoptions.m4
|
||||
build/ltsugar.m4
|
||||
build/ltversion.m4
|
||||
build/lt~obsolete.m4
|
||||
|
||||
testanalog
|
||||
testapp
|
||||
testboost
|
||||
testcid
|
||||
testpri
|
||||
testr2
|
||||
testsangomaboost
|
||||
testtones
|
||||
|
||||
!/sample/boost/Makefile
|
||||
!/sample/dso/Makefile
|
||||
|
||||
+148
-182
@@ -29,29 +29,34 @@
|
||||
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
PREFIX = $(prefix)
|
||||
SRC = src
|
||||
ACLOCAL_AMFLAGS = -I build
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
|
||||
SRC = src
|
||||
|
||||
moddir = @modinstdir@
|
||||
libdir = @libdir@
|
||||
library_includedir = $(PREFIX)/include
|
||||
library_includedir = $(prefix)/include
|
||||
|
||||
INCS = -I$(FT_SRCDIR)/$(SRC)/include -I$(FT_SRCDIR)/$(SRC)/isdn/include -I$(FT_SRCDIR)/$(SRC)/include/private
|
||||
INCS += -I$(FT_SRCDIR)/$(SRC)/ftmod/ftmod_sangoma_boost
|
||||
if SNGSS7
|
||||
INCS += -I/usr/include/sng_ss7/
|
||||
endif
|
||||
if SNGISDN
|
||||
INCS += -I/usr/include/sng_isdn/
|
||||
INCS = -I$(FT_SRCDIR)/$(SRC)/include -I$(FT_SRCDIR)/$(SRC)/include/private
|
||||
INCS += -I$(FT_SRCDIR)/$(SRC)/ftmod/ftmod_sangoma_boost
|
||||
|
||||
if HAVE_SNG_SS7
|
||||
INCS += -I/usr/include/sng_ss7
|
||||
endif
|
||||
|
||||
MY_CFLAGS = $(INCS) $(FTDM_CFLAGS) -DFTDM_CONFIG_DIR=\"@confdir@\" -DFTDM_MOD_DIR=\"$(moddir)\" @COMP_VENDOR_CFLAGS@ @DEFS@
|
||||
COMPILE = $(CC) $(MY_CFLAGS) $(INCS)
|
||||
if HAVE_SNG_ISDN
|
||||
INCS += -I/usr/include/sng_isdn
|
||||
endif
|
||||
|
||||
FTDM_COMPAT_CFLAGS = $(INCS) -DFTDM_CONFIG_DIR=\"@confdir@\" -DFTDM_MOD_DIR=\"$(moddir)\" @COMP_VENDOR_COMPAT_CFLAGS@ @DEFS@
|
||||
FTDM_CFLAGS = $(INCS) -DFTDM_CONFIG_DIR=\"@confdir@\" -DFTDM_MOD_DIR=\"$(moddir)\" @COMP_VENDOR_CFLAGS@ @DEFS@
|
||||
COMPILE = $(CC) $(FTDM_CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(COMPILE)
|
||||
LINK = $(LIBTOOL) --mode=link --tag=CC $(CC) $(MY_CFLAGS) $(LDFLAGS) -o $@
|
||||
LINK = $(LIBTOOL) --mode=link --tag=CC $(CC) $(FTDM_CFLAGS) $(LDFLAGS) -o $@
|
||||
|
||||
if DEBUGDTMF
|
||||
MY_CFLAGS += -DFTDM_DEBUG_DTMF
|
||||
if WANT_DEBUGDTMF
|
||||
FTDM_CFLAGS += -DFTDM_DEBUG_DTMF
|
||||
endif
|
||||
|
||||
|
||||
@@ -68,265 +73,226 @@ pkgconfig_DATA = freetdm.pc
|
||||
# libfreetdm
|
||||
#
|
||||
libfreetdm_la_SOURCES = \
|
||||
$(SRC)/hashtable.c \
|
||||
$(SRC)/hashtable_itr.c \
|
||||
$(SRC)/ftdm_io.c \
|
||||
$(SRC)/ftdm_queue.c \
|
||||
$(SRC)/ftdm_sched.c \
|
||||
$(SRC)/ftdm_call_utils.c \
|
||||
$(SRC)/ftdm_config.c \
|
||||
$(SRC)/ftdm_callerid.c \
|
||||
$(SRC)/fsk.c \
|
||||
$(SRC)/uart.c \
|
||||
$(SRC)/g711.c \
|
||||
$(SRC)/libteletone_detect.c \
|
||||
$(SRC)/libteletone_generate.c \
|
||||
$(SRC)/ftdm_buffer.c \
|
||||
$(SRC)/ftdm_threadmutex.c \
|
||||
$(SRC)/ftdm_dso.c \
|
||||
$(SRC)/ftdm_cpu_monitor.c
|
||||
$(SRC)/hashtable.c \
|
||||
$(SRC)/hashtable_itr.c \
|
||||
$(SRC)/ftdm_io.c \
|
||||
$(SRC)/ftdm_queue.c \
|
||||
$(SRC)/ftdm_sched.c \
|
||||
$(SRC)/ftdm_call_utils.c \
|
||||
$(SRC)/ftdm_config.c \
|
||||
$(SRC)/ftdm_callerid.c \
|
||||
$(SRC)/fsk.c \
|
||||
$(SRC)/uart.c \
|
||||
$(SRC)/g711.c \
|
||||
$(SRC)/libteletone_detect.c \
|
||||
$(SRC)/libteletone_generate.c \
|
||||
$(SRC)/ftdm_buffer.c \
|
||||
$(SRC)/ftdm_threadmutex.c \
|
||||
$(SRC)/ftdm_dso.c \
|
||||
$(SRC)/ftdm_cpu_monitor.c
|
||||
|
||||
library_include_HEADERS = \
|
||||
$(SRC)/include/freetdm.h \
|
||||
$(SRC)/include/ftdm_declare.h \
|
||||
$(SRC)/include/ftdm_threadmutex.h \
|
||||
$(SRC)/include/ftdm_os.h \
|
||||
$(SRC)/include/ftdm_dso.h
|
||||
$(SRC)/include/freetdm.h \
|
||||
$(SRC)/include/ftdm_declare.h \
|
||||
$(SRC)/include/ftdm_threadmutex.h \
|
||||
$(SRC)/include/ftdm_os.h \
|
||||
$(SRC)/include/ftdm_dso.h
|
||||
|
||||
lib_LTLIBRARIES = libfreetdm.la
|
||||
libfreetdm_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
libfreetdm_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
libfreetdm_la_LDFLAGS = -version-info 1:0:0 $(AM_LDFLAGS)
|
||||
libfreetdm_la_LIBADD = $(LIBS)
|
||||
|
||||
MYLIB = libfreetdm.la
|
||||
|
||||
core: libfreetdm.la
|
||||
core-install: install-libLTLIBRARIES
|
||||
|
||||
#
|
||||
# tools & test programs
|
||||
#
|
||||
noinst_PROGRAMS = testtones detect_tones detect_dtmf testpri testr2 testanalog testapp testcid #testisdn
|
||||
if HAVE_SCTP
|
||||
noinst_PROGRAMS += testboost
|
||||
endif
|
||||
noinst_PROGRAMS = testtones detect_tones detect_dtmf testpri testr2 testanalog testapp testcid
|
||||
noinst_PROGRAMS += testsangomaboost
|
||||
|
||||
testapp_SOURCES = $(SRC)/testapp.c
|
||||
testapp_LDADD = libfreetdm.la
|
||||
testapp_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
testapp_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
|
||||
testcid_SOURCES = $(SRC)/testcid.c
|
||||
testcid_LDADD = libfreetdm.la
|
||||
testcid_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
testcid_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
|
||||
testtones_SOURCES = $(SRC)/testtones.c
|
||||
testtones_LDADD = libfreetdm.la
|
||||
testtones_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
testtones_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
|
||||
detect_tones_SOURCES = $(SRC)/detect_tones.c
|
||||
detect_tones_LDADD = libfreetdm.la
|
||||
detect_tones_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
detect_tones_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
|
||||
detect_dtmf_SOURCES = $(SRC)/detect_dtmf.c
|
||||
detect_dtmf_LDADD = libfreetdm.la
|
||||
detect_dtmf_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
detect_dtmf_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
|
||||
#testisdn_SOURCES = $(SRC)/testisdn.c
|
||||
#testisdn_LDADD = libfreetdm.la
|
||||
#testisdn_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
#testisdn_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
|
||||
testpri_SOURCES = $(SRC)/testpri.c
|
||||
testpri_LDADD = libfreetdm.la
|
||||
testpri_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
testpri_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
|
||||
testr2_SOURCES = $(SRC)/testr2.c
|
||||
testr2_LDADD = libfreetdm.la
|
||||
testr2_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
testr2_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
|
||||
if HAVE_SCTP
|
||||
noinst_PROGRAMS += testboost
|
||||
testboost_SOURCES = $(SRC)/testboost.c
|
||||
testboost_LDADD = libfreetdm.la
|
||||
testboost_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
testboost_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
endif
|
||||
|
||||
testsangomaboost_SOURCES = $(SRC)/testsangomaboost.c
|
||||
testsangomaboost_LDADD = libfreetdm.la
|
||||
testsangomaboost_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
testsangomaboost_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
|
||||
testanalog_SOURCES = $(SRC)/testanalog.c
|
||||
testanalog_LDADD = libfreetdm.la
|
||||
testanalog_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
testanalog_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
|
||||
#
|
||||
# ftmod modules
|
||||
#
|
||||
mod_LTLIBRARIES = ftmod_zt.la ftmod_skel.la ftmod_analog.la ftmod_analog_em.la #ftmod_isdn.la
|
||||
|
||||
|
||||
if HAVE_SCTP
|
||||
mod_LTLIBRARIES += ftmod_sangoma_boost.la
|
||||
endif
|
||||
|
||||
if LIBSANGOMA
|
||||
mod_LTLIBRARIES += ftmod_wanpipe.la
|
||||
endif
|
||||
|
||||
if LIBPRI
|
||||
mod_LTLIBRARIES += ftmod_libpri.la
|
||||
endif
|
||||
|
||||
if PRITAP
|
||||
mod_LTLIBRARIES += ftmod_pritap.la
|
||||
endif
|
||||
|
||||
if SNGSS7
|
||||
mod_LTLIBRARIES += ftmod_sangoma_ss7.la
|
||||
endif
|
||||
|
||||
if SNGISDN
|
||||
mod_LTLIBRARIES += ftmod_sangoma_isdn.la
|
||||
endif
|
||||
|
||||
if OPENR2
|
||||
mod_LTLIBRARIES += ftmod_r2.la
|
||||
endif
|
||||
mod_LTLIBRARIES = ftmod_zt.la ftmod_skel.la ftmod_analog.la ftmod_analog_em.la
|
||||
|
||||
ftmod_zt_la_SOURCES = $(SRC)/ftmod/ftmod_zt/ftmod_zt.c
|
||||
ftmod_zt_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
ftmod_zt_la_LDFLAGS = -module -avoid-version
|
||||
ftmod_zt_la_LIBADD = $(MYLIB)
|
||||
ftmod_zt_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
ftmod_zt_la_LDFLAGS = -shared -module -avoid-version
|
||||
ftmod_zt_la_LIBADD = libfreetdm.la
|
||||
|
||||
ftmod_skel_la_SOURCES = $(SRC)/ftmod/ftmod_skel/ftmod_skel.c
|
||||
ftmod_skel_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
ftmod_skel_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
ftmod_skel_la_LDFLAGS = -module -avoid-version
|
||||
ftmod_skel_la_LIBADD = $(MYLIB)
|
||||
|
||||
if LIBSANGOMA
|
||||
ftmod_wanpipe_la_SOURCES = $(SRC)/ftmod/ftmod_wanpipe/ftmod_wanpipe.c
|
||||
ftmod_wanpipe_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS) -D__LINUX__ -I/usr/include/wanpipe
|
||||
ftmod_wanpipe_la_LDFLAGS = -module -avoid-version -lsangoma
|
||||
ftmod_wanpipe_la_LIBADD = $(MYLIB)
|
||||
endif
|
||||
|
||||
#ftmod_isdn_la_SOURCES = \
|
||||
#$(SRC)/isdn/EuroISDNStateNT.c \
|
||||
#$(SRC)/isdn/EuroISDNStateTE.c \
|
||||
#$(SRC)/isdn/mfifo.c \
|
||||
#$(SRC)/isdn/Q921.c \
|
||||
#$(SRC)/isdn/Q931api.c \
|
||||
#$(SRC)/isdn/Q931.c \
|
||||
#$(SRC)/isdn/Q931ie.c \
|
||||
#$(SRC)/isdn/Q931mes.c \
|
||||
#$(SRC)/isdn/Q931StateNT.c \
|
||||
#$(SRC)/isdn/Q931StateTE.c \
|
||||
#$(SRC)/isdn/nationalmes.c \
|
||||
#$(SRC)/isdn/nationalStateNT.c \
|
||||
#$(SRC)/isdn/nationalStateTE.c \
|
||||
#$(SRC)/isdn/DMSmes.c \
|
||||
#$(SRC)/isdn/DMSStateNT.c \
|
||||
#$(SRC)/isdn/DMSStateTE.c \
|
||||
#$(SRC)/isdn/5ESSmes.c \
|
||||
#$(SRC)/isdn/5ESSStateNT.c \
|
||||
#$(SRC)/isdn/5ESSStateTE.c \
|
||||
#$(SRC)/isdn/Q932mes.c \
|
||||
#$(SRC)/ftmod/ftmod_isdn/ftmod_isdn.c
|
||||
|
||||
#ftmod_isdn_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS) -D_GNU_SOURCE
|
||||
#ftmod_isdn_la_LDFLAGS = $(PCAP_LIB_FLAGS) -module -avoid-version
|
||||
#ftmod_isdn_la_LIBADD = $(MYLIB)
|
||||
ftmod_skel_la_LIBADD = libfreetdm.la
|
||||
|
||||
ftmod_analog_la_SOURCES = $(SRC)/ftmod/ftmod_analog/ftmod_analog.c
|
||||
ftmod_analog_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
ftmod_analog_la_LDFLAGS = -module -avoid-version
|
||||
ftmod_analog_la_LIBADD = $(MYLIB)
|
||||
ftmod_analog_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
ftmod_analog_la_LDFLAGS = -shared -module -avoid-version
|
||||
ftmod_analog_la_LIBADD = libfreetdm.la
|
||||
|
||||
ftmod_analog_em_la_SOURCES = $(SRC)/ftmod/ftmod_analog_em/ftmod_analog_em.c
|
||||
ftmod_analog_em_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
ftmod_analog_em_la_LDFLAGS = -module -avoid-version
|
||||
ftmod_analog_em_la_LIBADD = $(MYLIB)
|
||||
ftmod_analog_em_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
ftmod_analog_em_la_LDFLAGS = -shared -module -avoid-version
|
||||
ftmod_analog_em_la_LIBADD = libfreetdm.la
|
||||
|
||||
if HAVE_LIBSANGOMA
|
||||
mod_LTLIBRARIES += ftmod_wanpipe.la
|
||||
ftmod_wanpipe_la_SOURCES = $(SRC)/ftmod/ftmod_wanpipe/ftmod_wanpipe.c
|
||||
#some structures within Wanpipe drivers are not c99 compatible, so we need to compile ftmod_wanpipe
|
||||
#without c99 flags
|
||||
ftmod_wanpipe_la_CFLAGS = $(AM_CFLAGS) $(FTDM_COMPAT_CFLAGS) -D__LINUX__ -I/usr/include/wanpipe
|
||||
ftmod_wanpipe_la_LDFLAGS = -shared -module -avoid-version -lsangoma
|
||||
ftmod_wanpipe_la_LIBADD = libfreetdm.la
|
||||
endif
|
||||
|
||||
if HAVE_LIBISDN
|
||||
mod_LTLIBRARIES += ftmod_isdn.la
|
||||
ftmod_isdn_la_SOURCES = $(SRC)/ftmod/ftmod_isdn/ftmod_isdn.c
|
||||
ftmod_isdn_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS) -D_GNU_SOURCE $(LIBISDN_CPPFLAGS) $(PCAP_CPPFLAGS)
|
||||
ftmod_isdn_la_LDFLAGS = -shared -module -avoid-version $(LIBISDN_LDFLAGS) $(PCAP_LDFLAGS)
|
||||
ftmod_isdn_la_LIBADD = libfreetdm.la $(LIBISDN_LIBS) $(PCAP_LIBS)
|
||||
endif
|
||||
|
||||
if HAVE_SCTP
|
||||
mod_LTLIBRARIES += ftmod_sangoma_boost.la
|
||||
ftmod_sangoma_boost_la_SOURCES = $(SRC)/ftmod/ftmod_sangoma_boost/sangoma_boost_client.c $(SRC)/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c
|
||||
ftmod_sangoma_boost_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
ftmod_sangoma_boost_la_LDFLAGS = -module -avoid-version
|
||||
ftmod_sangoma_boost_la_LIBADD = $(MYLIB)
|
||||
ftmod_sangoma_boost_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
ftmod_sangoma_boost_la_LDFLAGS = -shared -module -avoid-version
|
||||
ftmod_sangoma_boost_la_LIBADD = libfreetdm.la
|
||||
endif
|
||||
|
||||
if LIBPRI
|
||||
if HAVE_LIBPRI
|
||||
mod_LTLIBRARIES += ftmod_libpri.la
|
||||
ftmod_libpri_la_SOURCES = $(SRC)/ftmod/ftmod_libpri/ftmod_libpri.c $(SRC)/ftmod/ftmod_libpri/lpwrap_pri.c
|
||||
ftmod_libpri_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
ftmod_libpri_la_LDFLAGS = -module -avoid-version -lpri
|
||||
ftmod_libpri_la_LIBADD = $(MYLIB)
|
||||
ftmod_libpri_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
ftmod_libpri_la_LDFLAGS = -shared -module -avoid-version -lpri
|
||||
ftmod_libpri_la_LIBADD = libfreetdm.la
|
||||
endif
|
||||
|
||||
if PRITAP
|
||||
if HAVE_PRITAP
|
||||
mod_LTLIBRARIES += ftmod_pritap.la
|
||||
ftmod_pritap_la_SOURCES = $(SRC)/ftmod/ftmod_pritap/ftmod_pritap.c
|
||||
ftmod_pritap_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
ftmod_pritap_la_LDFLAGS = -module -avoid-version -lpri
|
||||
ftmod_pritap_la_LIBADD = $(MYLIB)
|
||||
ftmod_pritap_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
ftmod_pritap_la_LDFLAGS = -shared -module -avoid-version -lpri
|
||||
ftmod_pritap_la_LIBADD = libfreetdm.la
|
||||
endif
|
||||
|
||||
if SNGSS7
|
||||
ftmod_sangoma_ss7_la_SOURCES = $(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_in.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_out.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cntrl.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_xml.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_timers.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cli.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cfg.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_sta.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_sts.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_logger.c
|
||||
ftmod_sangoma_ss7_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS) -D_GNU_SOURCE
|
||||
ftmod_sangoma_ss7_la_LDFLAGS = -module -avoid-version -lsng_ss7
|
||||
ftmod_sangoma_ss7_la_LIBADD = $(MYLIB)
|
||||
if HAVE_SNG_SS7
|
||||
mod_LTLIBRARIES += ftmod_sangoma_ss7.la
|
||||
ftmod_sangoma_ss7_la_SOURCES = \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_in.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_out.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cntrl.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_xml.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_timers.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cli.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cfg.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_sta.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_sts.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_logger.c
|
||||
|
||||
ftmod_sangoma_ss7_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS) -D_GNU_SOURCE
|
||||
ftmod_sangoma_ss7_la_LDFLAGS = -shared -module -avoid-version -lsng_ss7
|
||||
ftmod_sangoma_ss7_la_LIBADD = libfreetdm.la
|
||||
endif
|
||||
|
||||
if SNGISDN
|
||||
ftmod_sangoma_isdn_la_SOURCES = $(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cntrl.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_trace.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cntrl.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cfg.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_rcv.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_out.c
|
||||
if HAVE_SNG_ISDN
|
||||
mod_LTLIBRARIES += ftmod_sangoma_isdn.la
|
||||
ftmod_sangoma_isdn_la_SOURCES = \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cntrl.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_trace.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cntrl.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cfg.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_rcv.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c \
|
||||
$(SRC)/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_out.c
|
||||
|
||||
|
||||
ftmod_sangoma_isdn_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS) -D_GNU_SOURCE
|
||||
ftmod_sangoma_isdn_la_LDFLAGS = -module -avoid-version -lsng_isdn
|
||||
ftmod_sangoma_isdn_la_LIBADD = $(MYLIB)
|
||||
ftmod_sangoma_isdn_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS) -D_GNU_SOURCE
|
||||
ftmod_sangoma_isdn_la_LDFLAGS = -shared -module -avoid-version -lsng_isdn
|
||||
ftmod_sangoma_isdn_la_LIBADD = libfreetdm.la
|
||||
endif
|
||||
|
||||
if OPENR2
|
||||
if HAVE_OPENR2
|
||||
mod_LTLIBRARIES += ftmod_r2.la
|
||||
ftmod_r2_la_SOURCES = $(SRC)/ftmod/ftmod_r2/ftmod_r2.c
|
||||
ftmod_r2_la_CFLAGS = $(AM_CFLAGS) $(MY_CFLAGS)
|
||||
ftmod_r2_la_LDFLAGS = -module -avoid-version -lopenr2
|
||||
ftmod_r2_la_LIBADD = $(MYLIB)
|
||||
ftmod_r2_la_CFLAGS = $(AM_CFLAGS) $(FTDM_CFLAGS)
|
||||
ftmod_r2_la_LDFLAGS = -shared -module -avoid-version -lopenr2
|
||||
ftmod_r2_la_LIBADD = libfreetdm.la
|
||||
endif
|
||||
|
||||
dox doxygen:
|
||||
doxygen $(FT_SRCDIR)/docs/Doxygen.conf
|
||||
|
||||
mod_freetdm/mod_freetdm.$(DYNAMIC_LIB_EXTEN): $(MYLIB) mod_freetdm/mod_freetdm.c
|
||||
cd mod_freetdm && make
|
||||
mod_freetdm/mod_freetdm.$(DYNAMIC_LIB_EXTEN): libfreetdm.la mod_freetdm/mod_freetdm.c
|
||||
$(MAKE) -C mod_freetdm
|
||||
|
||||
mod_freetdm: mod_freetdm/mod_freetdm.$(DYNAMIC_LIB_EXTEN)
|
||||
|
||||
mod_freetdm-install: mod_freetdm
|
||||
cd mod_freetdm && make install
|
||||
$(MAKE) -C mod_freetdm install
|
||||
|
||||
mod_freetdm-clean:
|
||||
@if [ -f mod_freetdm/mod_freetdm.$(DYNAMIC_LIB_EXTEN) ] ; then cd mod_freetdm && make clean ; fi
|
||||
@if [ -f mod_freetdm/mod_freetdm.$(DYNAMIC_LIB_EXTEN) ] ; then \
|
||||
$(MAKE) -C mod_freetdm clean ; \
|
||||
fi
|
||||
|
||||
install-data-local:
|
||||
$(mkinstalldirs) $(DESTDIR)$(PREFIX)
|
||||
$(mkinstalldirs) $(DESTDIR)$(prefix)
|
||||
$(mkinstalldirs) $(DESTDIR)@confdir@
|
||||
@[ -f "$(DESTDIR)@confdir@/freetdm.conf" ] || ( cp conf/*.conf $(DESTDIR)@confdir@)
|
||||
@echo FreeTDM Installed
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
AC_DEFUN([AX_COMPILER_VENDOR],
|
||||
[
|
||||
AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor,
|
||||
[ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=unknown
|
||||
# note: don't check for gcc first since some other compilers define __GNUC__
|
||||
for ventest in intel:__ICC,__ECC,__INTEL_COMPILER ibm:__xlc__,__xlC__,__IBMC__,__IBMCPP__ gnu:__GNUC__ sun:__SUNPRO_C,__SUNPRO_CC hp:__HP_cc,__HP_aCC dec:__DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland:__BORLANDC__,__TURBOC__ comeau:__COMO__ cray:_CRAYC kai:__KCC lcc:__LCC__ metrowerks:__MWERKS__ sgi:__sgi,sgi microsoft:_MSC_VER watcom:__WATCOMC__ portland:__PGI; do
|
||||
vencpp="defined("`echo $ventest | cut -d: -f2 | sed 's/,/) || defined(/g'`")"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[
|
||||
#if !($vencpp)
|
||||
thisisanerror;
|
||||
#endif
|
||||
])], [ax_cv_]_AC_LANG_ABBREV[_compiler_vendor=`echo $ventest | cut -d: -f1`; break])
|
||||
done
|
||||
])
|
||||
])
|
||||
@@ -2,6 +2,10 @@ dnl libpcap.m4--PCAP libraries and includes
|
||||
dnl Derrick Brashear
|
||||
dnl from KTH krb and Arla
|
||||
dnl $Id: libpcap.m4,v 1.4 2006/01/20 20:21:09 snsimon Exp $
|
||||
dnl 2010/10/31 (stkn):
|
||||
dnl rename: PCAP_INC_FLAGS -> PCAP_CPPFLAGS
|
||||
dnl rename: PCAP_LIB_FLAGS -> PCAP_LDFLAGS (-L flags only)
|
||||
dnl add: PCAP_LIBS (libs only)
|
||||
|
||||
AC_DEFUN([PCAP_INC_WHERE1], [
|
||||
ac_cv_found_pcap_inc=no
|
||||
@@ -129,12 +133,14 @@ AC_ARG_WITH(pcap-include,
|
||||
AC_MSG_RESULT(yes)
|
||||
PCAP_INC_DIR=$ac_cv_pcap_where_inc
|
||||
PCAP_LIB_DIR=$ac_cv_pcap_where_lib
|
||||
PCAP_INC_FLAGS="-I${PCAP_INC_DIR}"
|
||||
PCAP_LIB_FLAGS="-L${PCAP_LIB_DIR} -lpcap"
|
||||
PCAP_CPPFLAGS="-I${PCAP_INC_DIR}"
|
||||
PCAP_LDFLAGS="-L${PCAP_LIB_DIR}"
|
||||
PCAP_LIBS="-lpcap"
|
||||
AC_SUBST(PCAP_INC_DIR)
|
||||
AC_SUBST(PCAP_LIB_DIR)
|
||||
AC_SUBST(PCAP_INC_FLAGS)
|
||||
AC_SUBST(PCAP_LIB_FLAGS)
|
||||
AC_SUBST(PCAP_CPPFLAGS)
|
||||
AC_SUBST(PCAP_LDFLAGS)
|
||||
AC_SUBST(PCAP_LIBS)
|
||||
AC_DEFINE([HAVE_LIBPCAP],[1],[libpcap])
|
||||
else
|
||||
ac_cv_found_pcap=no
|
||||
|
||||
+290
-142
@@ -1,119 +1,120 @@
|
||||
# -*- Autoconf -*-
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.59)
|
||||
AC_INIT([freetdm],[pre-alpha],[bugs@freeswitch.org])
|
||||
AC_PREREQ([2.59])
|
||||
AC_INIT([freetdm], [pre-alpha], [bugs@freeswitch.org])
|
||||
AC_CONFIG_SRCDIR([src/ftdm_io.c])
|
||||
|
||||
AC_CONFIG_AUX_DIR(build)
|
||||
AM_INIT_AUTOMAKE(libfreetdm,0.1)
|
||||
AC_CONFIG_AUX_DIR([build])
|
||||
AC_CONFIG_MACRO_DIR([build])
|
||||
AM_INIT_AUTOMAKE([libfreetdm], [0.1])
|
||||
|
||||
# >=automake-1.11
|
||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||
|
||||
# override some default libtool behavior and invoke AC_PROG_LIBTOOL
|
||||
# (see http://lists.gnu.org/archive/html/libtool/2007-03/msg00000.html)
|
||||
m4_defun([_LT_AC_LANG_F77_CONFIG], [:])
|
||||
m4_defun([_LT_AC_LANG_GCJ_CONFIG], [:])
|
||||
m4_defun([_LT_AC_LANG_RC_CONFIG], [:])
|
||||
|
||||
# Checks for programs.
|
||||
AC_PROG_CC
|
||||
AC_PROG_MAKE_SET
|
||||
AM_PROG_CC_C_O
|
||||
AC_PROG_LIBTOOL
|
||||
AC_PROG_INSTALL
|
||||
PKG_PROG_PKG_CONFIG
|
||||
|
||||
AC_PREFIX_DEFAULT(/usr/local/freetdm)
|
||||
# AC_PREFIX_DEFAULT does not get expanded until too late so we need to do this to use prefix in this script
|
||||
if test "x$prefix" = "xNONE" ; then
|
||||
prefix='/usr/local/freetdm'
|
||||
AX_COMPILER_VENDOR
|
||||
|
||||
# AC_PREFIX_DEFAULT does not get expanded until too late so we need
|
||||
# to do this to use prefix in this script
|
||||
AC_PREFIX_DEFAULT([/usr/local/freetdm])
|
||||
if test "x${prefix}" = "xNONE" ; then
|
||||
prefix='/usr/local/freetdm'
|
||||
fi
|
||||
|
||||
# Absolute source/build directory
|
||||
FT_SRCDIR=`(cd $srcdir && pwd)`
|
||||
ft_builddir=`pwd`
|
||||
AC_SUBST(FT_SRCDIR)
|
||||
AC_SUBST(ft_builddir)
|
||||
AC_SUBST([FT_SRCDIR])
|
||||
AC_SUBST([ft_builddir])
|
||||
|
||||
if test "$sysconfdir" = "\${prefix}/etc" ; then
|
||||
confdir="$prefix/conf"
|
||||
confdir="$prefix/conf"
|
||||
else
|
||||
confdir="$sysconfdir"
|
||||
confdir="$sysconfdir"
|
||||
fi
|
||||
|
||||
AC_SUBST(confdir)
|
||||
AC_SUBST([confdir])
|
||||
|
||||
#override some default libtool behavior and invoke AC_PROG_LIBTOOL (see http://lists.gnu.org/archive/html/libtool/2007-03/msg00000.html)
|
||||
m4_defun([_LT_AC_LANG_F77_CONFIG], [:])
|
||||
m4_defun([_LT_AC_LANG_GCJ_CONFIG], [:])
|
||||
m4_defun([_LT_AC_LANG_RC_CONFIG], [:])
|
||||
#AM_PROG_CC_C_O
|
||||
AC_PROG_LIBTOOL
|
||||
AC_PROG_INSTALL
|
||||
# Where to install the modules
|
||||
AC_ARG_WITH([modinstdir],
|
||||
[AS_HELP_STRING([--with-modinstdir=DIR], [Install modules into this location (default: ${prefix}/mod)])],
|
||||
[case "${withval}" in
|
||||
no|yes) AC_MSG_ERROR([Invalid value \"${withval}\", option requires a valid path]) ;;
|
||||
*) modinstdir="${withval}" ;;
|
||||
esac],
|
||||
[modinstdir="${prefix}/mod"]
|
||||
)
|
||||
AC_SUBST([modinstdir])
|
||||
|
||||
# Check for com;iler type
|
||||
AC_DEFUN([AX_COMPILER_VENDOR],
|
||||
[
|
||||
AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor,
|
||||
[ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=unknown
|
||||
# note: don't check for GCC first, since some other compilers define __GNUC__
|
||||
for ventest in intel:__ICC,__ECC,__INTEL_COMPILER ibm:__xlc__,__xlC__,__IBMC__,__IBMCPP__ gnu:__GNUC__ sun:__SUNPRO_C,__SUNPRO_CC hp:__HP_cc,__HP_aCC dec:__DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland:__BORLANDC__,__TURBOC__ comeau:__COMO__ cray:_CRAYC kai:__KCC lcc:__LCC__ metrowerks:__MWERKS__ sgi:__sgi,sgi microsoft:_MSC_VER watcom:__WATCOMC__ portland:__PGI; do
|
||||
vencpp="defined("`echo $ventest | cut -d: -f2 | sed 's/,/) || defined(/g'`")"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[
|
||||
#if !($vencpp)
|
||||
thisisanerror;
|
||||
#endif
|
||||
])], [ax_cv_]_AC_LANG_ABBREV[_compiler_vendor=`echo $ventest | cut -d: -f1`; break])
|
||||
done
|
||||
])
|
||||
])
|
||||
AC_ARG_ENABLE([enable_64], [AS_HELP_STRING([--enable-64], [Enable 64bit compilation])], [enable_64="$enableval"], [enable_64="no"])
|
||||
|
||||
AX_COMPILER_VENDOR
|
||||
AC_ARG_ENABLE([enable_64],
|
||||
[AS_HELP_STRING([--enable-64], [Enable 64bit compilation])],
|
||||
[enable_64="${enableval}"],
|
||||
[enable_64="no"]
|
||||
)
|
||||
|
||||
case "${ax_cv_c_compiler_vendor}" in
|
||||
gnu)
|
||||
COMP_VENDOR_CFLAGS="-ffast-math -Wall -Werror -Wunused-variable -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -O0"
|
||||
;;
|
||||
COMP_VENDOR_CFLAGS="-ffast-math -Wall -Werror -Wunused-variable -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -O0"
|
||||
;;
|
||||
sun)
|
||||
COMP_VENDOR_CFLAGS="-xc99=all -mt -xCC -D__FUNCTION__=__func__ -xvpara"
|
||||
if test "$enable_64" = "yes" ; then
|
||||
COMP_VENDOR_CFLAGS="-m64 $COMP_VENDOR_CFLAGS"
|
||||
fi
|
||||
;;
|
||||
COMP_VENDOR_CFLAGS="-xc99=all -mt -xCC -D__FUNCTION__=__func__ -xvpara"
|
||||
if test "$enable_64" != "no" ; then
|
||||
COMP_VENDOR_CFLAGS="-m64 $COMP_VENDOR_CFLAGS"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
COMP_VENDOR_CFLAGS="-std=c99 -Wall -Wunused-variable -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes"
|
||||
;;
|
||||
COMP_VENDOR_COMPAT_CFLAGS="-Wall -Wunused-variable -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes"
|
||||
COMP_VENDOR_CFLAGS="-std=c99 $COMP_VENDOR_COMPAT_CFLAGS"
|
||||
;;
|
||||
esac
|
||||
AC_SUBST([COMP_VENDOR_COMPAT_CFLAGS])
|
||||
AC_SUBST([COMP_VENDOR_CFLAGS])
|
||||
|
||||
|
||||
#set SOLINK variable based on compiler and host
|
||||
if test "x${ax_cv_c_compiler_vendor}" = "xsun" ; then
|
||||
SOLINK="-Bdynamic -dy -G"
|
||||
elif test "x${ax_cv_c_compiler_vendor}" = "xgnu" ; then
|
||||
case "$host" in
|
||||
*darwin*)
|
||||
SOLINK="-dynamic -bundle -force-flat-namespace"
|
||||
;;
|
||||
*-solaris2*)
|
||||
SOLINK="-shared -Xlinker"
|
||||
;;
|
||||
*)
|
||||
SOLINK="-shared -Xlinker -x"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
AC_ERROR([Please update configure.in with SOLINK values for your compiler])
|
||||
# Enable debugging
|
||||
AC_ARG_ENABLE([debug],
|
||||
[AC_HELP_STRING([--enable-debug], [build with debug information])],
|
||||
[enable_debug="${enableval}"],
|
||||
[enable_debug="yes"]
|
||||
)
|
||||
if test "${enable_debug}" != "no"; then
|
||||
AC_DEFINE([DEBUG], [], [Enable extra debugging.])
|
||||
|
||||
if test "x${ax_cv_c_compiler_vendor}" = "xgnu" ; then
|
||||
COMP_VENDOR_CFLAGS="$COMP_VENDOR_CFLAGS -g -ggdb"
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([COMP_VENDOR_CFLAGS])
|
||||
|
||||
# set DYNAMIC_LIB_EXTEN
|
||||
# we should really be using libtool so we don't need to do this
|
||||
case "$host" in
|
||||
*cygwin* | *mingw*)
|
||||
DYNAMIC_LIB_EXTEN="dll"
|
||||
;;
|
||||
*)
|
||||
DYNAMIC_LIB_EXTEN="so"
|
||||
;;
|
||||
*cygwin* | *mingw*)
|
||||
DYNAMIC_LIB_EXTEN="dll"
|
||||
;;
|
||||
*)
|
||||
DYNAMIC_LIB_EXTEN="so"
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_SUBST(SOLINK)
|
||||
AC_SUBST(DYNAMIC_LIB_EXTEN)
|
||||
AC_SUBST([DYNAMIC_LIB_EXTEN])
|
||||
|
||||
AC_CHECK_LIB([dl], [dlopen])
|
||||
AC_CHECK_LIB([pthread], [pthread_create])
|
||||
AC_CHECK_LIB([m], [cos])
|
||||
AX_LIB_PCAP
|
||||
|
||||
AC_CHECK_HEADERS([netinet/sctp.h netdb.h sys/select.h])
|
||||
AM_CONDITIONAL([HAVE_SCTP],[test "${ac_cv_header_netinet_sctp_h}" = "yes"])
|
||||
@@ -121,105 +122,252 @@ AM_CONDITIONAL([HAVE_SCTP],[test "${ac_cv_header_netinet_sctp_h}" = "yes"])
|
||||
AC_CHECK_FUNC([gethostbyname_r],
|
||||
[], [AC_CHECK_LIB([nsl], [gethostbyname_r])]
|
||||
)
|
||||
if test "$ac_cv_func_gethostbyname_r" = "yes" -o "$ac_cv_lib_nsl_gethostbyname_r" = "yes" ; then
|
||||
if test "$ac_cv_func_gethostbyname_r" = "yes" -o "$ac_cv_lib_nsl_gethostbyname_r" = "yes"
|
||||
then
|
||||
AC_MSG_CHECKING([whether gethostbyname_r requires five arguments])
|
||||
|
||||
AC_MSG_CHECKING([whether gethostbyname_r requires five arguments])
|
||||
ac_cv_func_gethostbyname_r_five_args="no"
|
||||
|
||||
ac_cv_func_gethostbyname_r_five_args="no"
|
||||
AC_TRY_COMPILE([#include <netdb.h>],
|
||||
[char *name;
|
||||
struct hostent *he, *res;
|
||||
char buffer[2048];
|
||||
int buflen = 2048;
|
||||
(void)gethostbyname_r(name, he, buffer, buflen, &res)],
|
||||
[ac_cv_func_gethostbyname_r_five_args="yes"
|
||||
AC_DEFINE([HAVE_GETHOSTBYNAME_R_FIVE], [1], [gethostbyname_r has five arguments])]
|
||||
)
|
||||
|
||||
AC_TRY_COMPILE([#include <netdb.h>],
|
||||
[char *name;
|
||||
struct hostent *he, *res;
|
||||
char buffer[2048];
|
||||
int buflen = 2048;
|
||||
(void)gethostbyname_r(name, he, buffer, buflen, &res)],
|
||||
[ac_cv_func_gethostbyname_r_five_args="yes"
|
||||
AC_DEFINE([HAVE_GETHOSTBYNAME_R_FIVE], [1], [gethostbyname_r has five arguments])]
|
||||
)
|
||||
|
||||
AC_MSG_RESULT([$ac_cv_func_gethostbyname_r_five_args])
|
||||
AC_DEFINE([HAVE_GETHOSTBYNAME_R],[1],[threadsafe gethostbyname])
|
||||
AC_MSG_RESULT([$ac_cv_func_gethostbyname_r_five_args])
|
||||
AC_DEFINE([HAVE_GETHOSTBYNAME_R], [1], [threadsafe gethostbyname])
|
||||
fi
|
||||
|
||||
# Enable debugging
|
||||
AC_ARG_ENABLE(debug,
|
||||
[AC_HELP_STRING([--enable-debug],[build with debug information])],[enable_debug="$enableval"],[enable_debug="yes"])
|
||||
##
|
||||
## Modules and optional features
|
||||
##
|
||||
AC_MSG_RESULT([${as_nl}<<>> Modules and optional features])
|
||||
|
||||
if test "${enable_debug}" = "yes"; then
|
||||
AC_DEFINE([DEBUG],[],[Enable extra debugging.])
|
||||
|
||||
if test "x${ax_cv_c_compiler_vendor}" = "xgnu" ; then
|
||||
COMP_VENDOR_CFLAGS="$COMP_VENDOR_CFLAGS -g -ggdb"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Where to install the modules
|
||||
AC_ARG_WITH([modinstdir],
|
||||
[AS_HELP_STRING([--with-modinstdir=DIR], [Install modules into this location (default: $prefix/mod)])], [modinstdir="$withval"], [modinstdir="${prefix}/mod"])
|
||||
|
||||
AC_SUBST(modinstdir)
|
||||
|
||||
|
||||
# libpri?
|
||||
AC_ARG_WITH([libpri],
|
||||
[AS_HELP_STRING([--with-libpri], [Install ftmod_libpri])], [enable_libpri="yes"], [enable_libpri="no"])
|
||||
AC_SUBST(enable_libpri)
|
||||
|
||||
# pritap?
|
||||
##
|
||||
# pritap (TODO: add checks)
|
||||
#
|
||||
HAVE_PRITAP="no"
|
||||
AC_ARG_WITH([pritap],
|
||||
[AS_HELP_STRING([--with-pritap], [Install ftmod_pritap])], [enable_pritap="yes"], [enable_pritap="no"])
|
||||
AC_SUBST(enable_pritap)
|
||||
[AS_HELP_STRING([--with-pritap], [Install ftmod_pritap])],
|
||||
[case "${withval}" in
|
||||
no) enable_pritap="no" ;;
|
||||
*) enable_pritab="yes" ;;
|
||||
esac],
|
||||
[enable_pritap="no"]
|
||||
)
|
||||
HAVE_PRITAP="${enable_pritap}"
|
||||
AM_CONDITIONAL([HAVE_PRITAP],[test "${enable_pritap}" = "yes"])
|
||||
|
||||
# debug dtmf?
|
||||
AC_ARG_WITH([debugdtmf],
|
||||
[AS_HELP_STRING([--with-debugdtmf], [Debug DTMF])], [enable_debugdtmf="yes"], [enable_debugdtmf="no"])
|
||||
AC_SUBST(enable_debugdtmf)
|
||||
[AS_HELP_STRING([--with-debugdtmf], [Debug DTMF])],
|
||||
[case "${withval}" in
|
||||
no) enable_debugdtmf="no" ;;
|
||||
*) enable_debugdtmf="yes" ;;
|
||||
esac],
|
||||
[enable_debugdtmf="no"]
|
||||
)
|
||||
AM_CONDITIONAL([WANT_DEBUGDTMF], [test "${enable_debugdtmf}" = "yes"])
|
||||
|
||||
AC_CHECK_LIB([sangoma], [sangoma_span_chan_toif], [have_libsangoma="yes"])
|
||||
AM_CONDITIONAL([LIBSANGOMA],[test "${have_libsangoma}" = "yes"])
|
||||
##
|
||||
# OpenR2 stack
|
||||
#
|
||||
HAVE_OPENR2="no"
|
||||
AC_CHECK_LIB([openr2], [openr2_context_set_io_type], [HAVE_OPENR2="yes"])
|
||||
AC_MSG_RESULT([checking whether to build ftmod_r2... ${HAVE_OPENR2}])
|
||||
AM_CONDITIONAL([HAVE_OPENR2], [test "${HAVE_OPENR2}" = "yes"])
|
||||
|
||||
AM_CONDITIONAL([LIBPRI],[test "${enable_libpri}" = "yes"])
|
||||
##
|
||||
# Digium libpri (TODO: add checks)
|
||||
#
|
||||
HAVE_LIBPRI="no"
|
||||
AC_ARG_WITH([libpri],
|
||||
[AS_HELP_STRING([--with-libpri], [Install ftmod_libpri])],
|
||||
[case "${withval}" in
|
||||
no) enable_libpri="no" ;;
|
||||
*) enable_libpri="yes" ;;
|
||||
esac],
|
||||
[enable_libpri="no"]
|
||||
)
|
||||
if test "${enable_libpri}" != "no"
|
||||
then
|
||||
AC_MSG_RESULT([${as_nl}<<>> Digium libpri])
|
||||
|
||||
AM_CONDITIONAL([PRITAP],[test "${enable_pritap}" = "yes"])
|
||||
save_LIBS="${LIBS}"
|
||||
LIBS="${LIBS} -lpri"
|
||||
AC_MSG_CHECKING([whether libpri is usable])
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[#include <libpri.h>],
|
||||
[const char *version = pri_get_version();]
|
||||
)],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([libpri is not installed or unusable (see config.log for details)])]
|
||||
)
|
||||
|
||||
AM_CONDITIONAL([DEBUGDTMF],[test "${enable_debugdtmf}" = "yes"])
|
||||
AC_MSG_CHECKING([whether libpri has BRI support])
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[extern void pri_new_bri_cb(void);],
|
||||
[pri_new_bri_cb();]
|
||||
)],
|
||||
[AC_DEFINE([HAVE_LIBPRI_BRI], [1], [libpri has BRI support])
|
||||
AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
AC_MSG_NOTICE([You will need libpri-1.4.12_beta1 or newer for BRI support])]
|
||||
)
|
||||
|
||||
AC_CHECK_LIB([sng_ss7], [sng_isup_init], [have_sng_ss7="yes"])
|
||||
AM_CONDITIONAL([SNGSS7],[test "${have_sng_ss7}" = "yes"])
|
||||
AC_MSG_CHECKING([whether libpri has AOC event support])
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[extern void pri_aoc_events_enable(void);],
|
||||
[pri_aoc_events_enable();]
|
||||
)],
|
||||
[AC_DEFINE([HAVE_LIBPRI_AOC], [1], [libpri has AOC event support])
|
||||
AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
AC_MSG_NOTICE([You will need libpri-1.4.12_beta1 or newer for AOC event support])]
|
||||
)
|
||||
LIBS="${save_LIBS}"
|
||||
fi
|
||||
HAVE_LIBPRI="${enable_libpri}"
|
||||
AM_CONDITIONAL([HAVE_LIBPRI],[test "${enable_libpri}" = "yes"])
|
||||
|
||||
AC_CHECK_LIB([sng_isdn], [sng_isdn_init], [have_sng_isdn="yes"])
|
||||
AM_CONDITIONAL([SNGISDN],[test "${have_sng_isdn}" = "yes"])
|
||||
##
|
||||
# Sangoma Wanpipe
|
||||
#
|
||||
HAVE_LIBSANGOMA="no"
|
||||
AC_MSG_RESULT([${as_nl}<<>> Sangoma Wanpipe])
|
||||
AC_CHECK_LIB([sangoma], [sangoma_span_chan_toif], [HAVE_LIBSANGOMA="yes"])
|
||||
AC_MSG_RESULT([checking whether to build ftmod_wanpipe... ${HAVE_LIBSANGOMA}])
|
||||
AM_CONDITIONAL([HAVE_LIBSANGOMA], [test "${HAVE_LIBSANGOMA}" = "yes"])
|
||||
|
||||
AC_CHECK_LIB([openr2], [openr2_context_set_io_type], [have_openr2="yes"])
|
||||
AM_CONDITIONAL([OPENR2],[test "${have_openr2}" = "yes"])
|
||||
##
|
||||
# Sangoma ISDN stack
|
||||
#
|
||||
HAVE_SNG_ISDN="no"
|
||||
AC_MSG_RESULT([${as_nl}<<>> Sangoma ISDN stack])
|
||||
AC_CHECK_LIB([sng_isdn], [sng_isdn_init], [HAVE_SNG_ISDN="yes"])
|
||||
AC_MSG_RESULT([checking whether to build ftmod_sangoma_isdn... ${HAVE_SNG_ISDN}])
|
||||
AM_CONDITIONAL([HAVE_SNG_ISDN], [test "${HAVE_SNG_ISDN}" = "yes"])
|
||||
|
||||
if test "${have_sng_isdn}" = "yes"; then
|
||||
if test "${HAVE_SNG_ISDN}" = "yes"; then
|
||||
if test "${build}" == "${host}"
|
||||
then
|
||||
case "${host}" in
|
||||
x86_64-*)
|
||||
# X86_64 machines need additional flags when compiling against libsng_isdn
|
||||
CFLAGS="$CFLAGS -DBIT_64 -DALIGN_64BIT"
|
||||
;;
|
||||
# X86_64 machines need additional flags when compiling against libsng_isdn
|
||||
CFLAGS="$CFLAGS -DBIT_64 -DALIGN_64BIT"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "${have_sng_ss7}" = "yes"; then
|
||||
##
|
||||
# Sangoma SS7 stack
|
||||
#
|
||||
HAVE_SNG_SS7="no"
|
||||
AC_MSG_RESULT([${as_nl}<<>> Sangoma SS7 stack])
|
||||
AC_CHECK_LIB([sng_ss7], [sng_isup_init], [HAVE_SNG_SS7="yes"])
|
||||
AC_MSG_RESULT([checking whether to build ftmod_sangoma_ss7... ${HAVE_SNG_SS7}])
|
||||
AM_CONDITIONAL([HAVE_SNG_SS7], [test "${HAVE_SNG_SS7}" = "yes"])
|
||||
|
||||
if test "${HAVE_SNG_SS7}" = "yes"; then
|
||||
if test "${build}" == "${host}"
|
||||
then
|
||||
case "${host}" in
|
||||
x86_64-*)
|
||||
# X86_64 machines need additional flags when compiling against libsng_isdn
|
||||
CFLAGS="$CFLAGS -DBIT_64 -DALIGN_64BIT"
|
||||
;;
|
||||
# X86_64 machines need additional flags when compiling against libsng_isdn
|
||||
CFLAGS="$CFLAGS -DBIT_64 -DALIGN_64BIT"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
|
||||
COMP_VENDOR_CFLAGS="$COMP_VENDOR_CFLAGS"
|
||||
AC_SUBST(COMP_VENDOR_CFLAGS)
|
||||
AC_CONFIG_FILES([Makefile
|
||||
freetdm.pc
|
||||
mod_freetdm/Makefile])
|
||||
##
|
||||
# libisdn
|
||||
#
|
||||
HAVE_LIBISDN="no"
|
||||
AC_ARG_WITH([libisdn],
|
||||
[AS_HELP_STRING([--with-libisdn], [Install ftmod_isdn (libisdn stack)])],
|
||||
[case "${withval}" in
|
||||
no) with_libisdn="no" ;;
|
||||
*) with_libisdn="yes" ;;
|
||||
esac
|
||||
],
|
||||
[with_libisdn="no"]
|
||||
)
|
||||
if test "${with_libisdn}" != "no"
|
||||
then
|
||||
AC_MSG_RESULT([${as_nl}<<>> ftmod_isdn (libisdn stack)])
|
||||
PKG_CHECK_MODULES([libisdn],
|
||||
[libisdn >= 0.0.1],
|
||||
[AC_MSG_CHECKING([libisdn version])
|
||||
LIBISDN_VERSION="`${PKG_CONFIG} --modversion libisdn`"
|
||||
if test -z "${LIBISDN_VERSION}"; then
|
||||
AC_MSG_ERROR([Failed to retrieve libisdn version])
|
||||
fi
|
||||
AC_MSG_RESULT([${LIBISDN_VERSION}])
|
||||
|
||||
# check features
|
||||
AC_MSG_CHECKING([for new experimental API])
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[#include <libisdn/version.h>
|
||||
#if !LIBISDN_FEATURE(API2)
|
||||
#error "libisdn API v2 not available"
|
||||
#endif
|
||||
],
|
||||
[;]
|
||||
)],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])]
|
||||
)
|
||||
|
||||
HAVE_LIBISDN="yes"
|
||||
AC_DEFINE([HAVE_LIBISDN], [1], [libisdn support])
|
||||
AC_SUBST([LIBISDN_CFLAGS], [${libisdn_CFLAGS}])
|
||||
AC_SUBST([LIBISDN_CPPFLAGS],[${libisdn_CPPFLAGS}])
|
||||
AC_SUBST([LIBISDN_LDFLAGS], [${libisdn_LDFLAGS}])
|
||||
AC_SUBST([LIBISDN_LIBS], [${libisdn_LIBS}])
|
||||
AC_SUBST([LIBISDN_VERSION])
|
||||
],
|
||||
[AC_MSG_ERROR([Need libisdn-0.0.1 or higher])]
|
||||
)
|
||||
AX_LIB_PCAP
|
||||
fi
|
||||
AM_CONDITIONAL([HAVE_LIBISDN], [test "${HAVE_LIBISDN}" = "yes"])
|
||||
|
||||
AC_MSG_RESULT([${as_nl}<<>> Creating output files])
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
freetdm.pc
|
||||
mod_freetdm/Makefile
|
||||
])
|
||||
AC_OUTPUT
|
||||
|
||||
#
|
||||
# summary screen
|
||||
#
|
||||
AC_MSG_RESULT([
|
||||
============================ FreeTDM configuration ============================
|
||||
|
||||
+ Modules
|
||||
|
||||
Signalling:
|
||||
ftmod_isdn......................... ${HAVE_LIBISDN}
|
||||
ftmod_libpri....................... ${HAVE_LIBPRI}
|
||||
ftmod_sangoma_isdn................. ${HAVE_SNG_ISDN}
|
||||
ftmod_sangoma_ss7.................. ${HAVE_SNG_SS7}
|
||||
ftmod_r2........................... ${HAVE_OPENR2}
|
||||
ftmod_pritap....................... ${HAVE_PRITAP}
|
||||
I/O:
|
||||
ftmod_wanpipe...................... ${HAVE_LIBSANGOMA}
|
||||
|
||||
===============================================================================
|
||||
])
|
||||
|
||||
@@ -7,7 +7,7 @@ cp Debug/mod/*.dll $fsdir/Debug/mod/
|
||||
cp mod_freetdm/Debug/*.pdb $fsdir/Debug/mod/
|
||||
cp Debug/*.dll $fsdir/Debug/
|
||||
cp Debug/*.pdb $fsdir/Debug/
|
||||
cp Debug/testsangomaboost.exe $fsdir/Debug/
|
||||
#cp Debug/testsangomaboost.exe $fsdir/Debug/
|
||||
echo "FRIENDLY REMINDER: RECOMPILE ftmod_wanpipe WHENEVER YOU INSTALL NEW DRIVERS"
|
||||
set +x
|
||||
|
||||
|
||||
@@ -63,8 +63,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ftmod_sangoma_isdn", "src\f
|
||||
{93B8812C-3EC4-4F78-8970-FFBFC99E167D} = {93B8812C-3EC4-4F78-8970-FFBFC99E167D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ftmod_r2", "src\ftmod\ftmod_r2\ftmod_r2.vcproj", "{94F04D58-5EB8-4B48-8FE5-75EBF468073B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ftmod_r2", "src\ftmod\ftmod_r2\ftmod_r2.2008.vcproj", "{08C3EA27-A51D-47F8-B47D-B189C649CF30}"
|
||||
EndProject
|
||||
Global
|
||||
@@ -162,12 +160,6 @@ Global
|
||||
{B2AF4EA6-0CD7-4529-9EB5-5AF43DB90395}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{B2AF4EA6-0CD7-4529-9EB5-5AF43DB90395}.Release|Win32.Build.0 = Release|Win32
|
||||
{B2AF4EA6-0CD7-4529-9EB5-5AF43DB90395}.Release|x64.ActiveCfg = Release|Win32
|
||||
{94F04D58-5EB8-4B48-8FE5-75EBF468073B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{94F04D58-5EB8-4B48-8FE5-75EBF468073B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{94F04D58-5EB8-4B48-8FE5-75EBF468073B}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{94F04D58-5EB8-4B48-8FE5-75EBF468073B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{94F04D58-5EB8-4B48-8FE5-75EBF468073B}.Release|Win32.Build.0 = Release|Win32
|
||||
{94F04D58-5EB8-4B48-8FE5-75EBF468073B}.Release|x64.ActiveCfg = Release|Win32
|
||||
{08C3EA27-A51D-47F8-B47D-B189C649CF30}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{08C3EA27-A51D-47F8-B47D-B189C649CF30}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{08C3EA27-A51D-47F8-B47D-B189C649CF30}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
|
||||
@@ -657,7 +657,7 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch
|
||||
status = ftdm_channel_wait(tech_pvt->ftdmchan, &wflags, chunk);
|
||||
|
||||
if (status == FTDM_FAIL) {
|
||||
ftdm_log(FTDM_LOG_WARNING, "failed to wait for I/O\n");
|
||||
ftdm_log(FTDM_LOG_ERROR, "Failed to wait for I/O\n");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@@ -2434,7 +2434,7 @@ static void parse_bri_pri_spans(switch_xml_t cfg, switch_xml_t spans)
|
||||
char *var = (char *) switch_xml_attr_soft(param, "name");
|
||||
char *val = (char *) switch_xml_attr_soft(param, "value");
|
||||
|
||||
if (ftdm_array_len(spanparameters) == paramindex) {
|
||||
if (ftdm_array_len(spanparameters) - 1 == paramindex) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Too many parameters for ss7 span, ignoring any parameter after %s\n", var);
|
||||
break;
|
||||
}
|
||||
@@ -2594,7 +2594,7 @@ static switch_status_t load_config(void)
|
||||
char *var = (char *) switch_xml_attr_soft(param, "name");
|
||||
char *val = (char *) switch_xml_attr_soft(param, "value");
|
||||
|
||||
if (sizeof(spanparameters)/sizeof(spanparameters[0]) == paramindex) {
|
||||
if (ftdm_array_len(spanparameters) - 1 == paramindex) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Too many parameters for ss7 span, ignoring any parameter after %s\n", var);
|
||||
break;
|
||||
}
|
||||
@@ -2923,102 +2923,56 @@ static switch_status_t load_config(void)
|
||||
|
||||
if ((spans = switch_xml_child(cfg, "pri_spans"))) {
|
||||
for (myspan = switch_xml_child(spans, "span"); myspan; myspan = myspan->next) {
|
||||
char *id = (char *) switch_xml_attr(myspan, "id");
|
||||
char *name = (char *) switch_xml_attr(myspan, "name");
|
||||
ftdm_conf_parameter_t spanparameters[10];
|
||||
ftdm_status_t zstatus = FTDM_FAIL;
|
||||
const char *context = "default";
|
||||
const char *dialplan = "XML";
|
||||
//Q921NetUser_t mode = Q931_TE;
|
||||
//Q931Dialect_t dialect = Q931_Dialect_National;
|
||||
char *mode = NULL;
|
||||
char *dialect = NULL;
|
||||
uint32_t span_id = 0;
|
||||
unsigned paramindex = 0;
|
||||
ftdm_span_t *span = NULL;
|
||||
const char *tonegroup = NULL;
|
||||
char *digit_timeout = NULL;
|
||||
const char *opts = "none";
|
||||
uint32_t to = 0;
|
||||
int q921loglevel = -1;
|
||||
int q931loglevel = -1;
|
||||
|
||||
// quick debug
|
||||
//switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "ID: '%s', Name:'%s'\n",id,name);
|
||||
uint32_t span_id = 0;
|
||||
|
||||
if (!name) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "span missing required attribute 'name'\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
memset(spanparameters, 0, sizeof(spanparameters));
|
||||
|
||||
for (param = switch_xml_child(myspan, "param"); param; param = param->next) {
|
||||
char *var = (char *) switch_xml_attr_soft(param, "name");
|
||||
char *val = (char *) switch_xml_attr_soft(param, "value");
|
||||
|
||||
if (!strcasecmp(var, "tonegroup")) {
|
||||
tonegroup = val;
|
||||
} else if (!strcasecmp(var, "mode")) {
|
||||
mode = val;
|
||||
} else if (!strcasecmp(var, "dialect")) {
|
||||
dialect = val;
|
||||
} else if (!strcasecmp(var, "q921loglevel")) {
|
||||
if ((q921loglevel = switch_log_str2level(val)) == SWITCH_LOG_INVALID) {
|
||||
q921loglevel = -1;
|
||||
}
|
||||
} else if (!strcasecmp(var, "q931loglevel")) {
|
||||
if ((q931loglevel = switch_log_str2level(val)) == SWITCH_LOG_INVALID) {
|
||||
q931loglevel = -1;
|
||||
}
|
||||
} else if (!strcasecmp(var, "context")) {
|
||||
if (ftdm_array_len(spanparameters) - 1 == paramindex) {
|
||||
ftdm_log(FTDM_LOG_ERROR, "Too many parameters for pri span '%s', ignoring everything after '%s'\n", name, var);
|
||||
break;
|
||||
}
|
||||
|
||||
if (ftdm_strlen_zero(var) || ftdm_strlen_zero(val)) {
|
||||
ftdm_log(FTDM_LOG_WARNING, "Skipping parameter with empty name or value\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!strcasecmp(var, "context")) {
|
||||
context = val;
|
||||
} else if (!strcasecmp(var, "opts")) {
|
||||
opts = val;
|
||||
} else if (!strcasecmp(var, "dialplan")) {
|
||||
dialplan = val;
|
||||
} else if (!strcasecmp(var, "digit_timeout") || !strcasecmp(var, "digit-timeout")) {
|
||||
digit_timeout = val;
|
||||
}
|
||||
}
|
||||
|
||||
if (!id && !name) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "span missing required param 'id'\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (name) {
|
||||
zstatus = ftdm_span_find_by_name(name, &span);
|
||||
} else {
|
||||
if (switch_is_number(id)) {
|
||||
span_id = atoi(id);
|
||||
zstatus = ftdm_span_find(span_id, &span);
|
||||
}
|
||||
|
||||
if (zstatus != FTDM_SUCCESS) {
|
||||
zstatus = ftdm_span_find_by_name(id, &span);
|
||||
} else {
|
||||
spanparameters[paramindex].var = var;
|
||||
spanparameters[paramindex].val = val;
|
||||
paramindex++;
|
||||
}
|
||||
}
|
||||
|
||||
if (digit_timeout) {
|
||||
to = atoi(digit_timeout);
|
||||
}
|
||||
|
||||
zstatus = ftdm_span_find_by_name(name, &span);
|
||||
if (zstatus != FTDM_SUCCESS) {
|
||||
ftdm_log(FTDM_LOG_ERROR, "Error finding FreeTDM span id:%s name:%s\n", switch_str_nil(id), switch_str_nil(name));
|
||||
ftdm_log(FTDM_LOG_ERROR, "Error finding FreeTDM span %s\n", name);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!span_id) {
|
||||
span_id = ftdm_span_get_id(span);
|
||||
}
|
||||
|
||||
if (!tonegroup) {
|
||||
tonegroup = "us";
|
||||
}
|
||||
|
||||
if (ftdm_configure_span(span, "isdn", on_clear_channel_signal,
|
||||
"mode", mode,
|
||||
"dialect", dialect,
|
||||
"digit_timeout", &to,
|
||||
"opts", opts,
|
||||
"tonemap", tonegroup,
|
||||
"q921loglevel", q921loglevel,
|
||||
"q931loglevel", q931loglevel,
|
||||
FTDM_TAG_END) != FTDM_SUCCESS) {
|
||||
ftdm_log(FTDM_LOG_ERROR, "Error starting FreeTDM span %d mode: %s dialect: %s error: %s\n", span_id,
|
||||
mode, dialect, ftdm_span_get_last_error(span));
|
||||
span_id = ftdm_span_get_id(span);
|
||||
if (ftdm_configure_span_signaling(span, "isdn", on_clear_channel_signal, spanparameters) != FTDM_SUCCESS) {
|
||||
ftdm_log(FTDM_LOG_ERROR, "Error configuring FreeTDM span %s\n", name);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -3048,11 +3002,18 @@ static switch_status_t load_config(void)
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "span missing required attribute 'name'\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
memset(spanparameters, 0, sizeof(spanparameters));
|
||||
|
||||
for (param = switch_xml_child(myspan, "param"); param; param = param->next) {
|
||||
char *var = (char *) switch_xml_attr_soft(param, "name");
|
||||
char *val = (char *) switch_xml_attr_soft(param, "value");
|
||||
|
||||
if (ftdm_array_len(spanparameters) - 1 == paramindex) {
|
||||
ftdm_log(FTDM_LOG_ERROR, "Too many parameters for pritap span '%s', ignoring everything after '%s'\n", name, var);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!strcasecmp(var, "context")) {
|
||||
context = val;
|
||||
} else if (!strcasecmp(var, "dialplan")) {
|
||||
@@ -3088,85 +3049,56 @@ static switch_status_t load_config(void)
|
||||
|
||||
if ((spans = switch_xml_child(cfg, "libpri_spans"))) {
|
||||
for (myspan = switch_xml_child(spans, "span"); myspan; myspan = myspan->next) {
|
||||
char *id = (char *) switch_xml_attr(myspan, "id");
|
||||
char *name = (char *) switch_xml_attr(myspan, "name");
|
||||
ftdm_conf_parameter_t spanparameters[10];
|
||||
ftdm_status_t zstatus = FTDM_FAIL;
|
||||
const char *context = "default";
|
||||
const char *context = "default";
|
||||
const char *dialplan = "XML";
|
||||
|
||||
const char *o_node = "cpe";
|
||||
const char *o_switch = "dms100";
|
||||
const char *o_dp = "unknown";
|
||||
const char *o_l1 = "ulaw";
|
||||
const char *o_debug = "none";
|
||||
const char* opts = "none";
|
||||
|
||||
uint32_t span_id = 0;
|
||||
unsigned paramindex = 0;
|
||||
ftdm_span_t *span = NULL;
|
||||
uint32_t span_id = 0;
|
||||
|
||||
if (!name) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "span missing required attribute 'name'\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
memset(spanparameters, 0, sizeof(spanparameters));
|
||||
|
||||
|
||||
for (param = switch_xml_child(myspan, "param"); param; param = param->next) {
|
||||
char *var = (char *) switch_xml_attr_soft(param, "name");
|
||||
char *val = (char *) switch_xml_attr_soft(param, "value");
|
||||
|
||||
if (!strcasecmp(var, "node")) {
|
||||
o_node = val;
|
||||
} else if (!strcasecmp(var, "switch")) {
|
||||
o_switch = val;
|
||||
} else if (!strcasecmp(var, "dp")) {
|
||||
o_dp = val;
|
||||
} else if (!strcasecmp(var, "l1")) {
|
||||
o_l1 = val;
|
||||
} else if (!strcasecmp(var, "debug")) {
|
||||
o_debug = val;
|
||||
} else if (!strcasecmp(var, "context")) {
|
||||
if (ftdm_array_len(spanparameters) - 1 == paramindex) {
|
||||
ftdm_log(FTDM_LOG_ERROR, "Too many parameters for libpri span, ignoring everything after '%s'\n", var);
|
||||
break;
|
||||
}
|
||||
|
||||
if (ftdm_strlen_zero(var) || ftdm_strlen_zero(val)) {
|
||||
ftdm_log(FTDM_LOG_WARNING, "Skipping parameter with empty name or value\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!strcasecmp(var, "context")) {
|
||||
context = val;
|
||||
} else if (!strcasecmp(var, "opts")) {
|
||||
opts = val;
|
||||
} else if (!strcasecmp(var, "dialplan")) {
|
||||
dialplan = val;
|
||||
}
|
||||
}
|
||||
|
||||
if (!id && !name) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "span missing required param 'id'\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (name) {
|
||||
zstatus = ftdm_span_find_by_name(name, &span);
|
||||
} else {
|
||||
if (switch_is_number(id)) {
|
||||
span_id = atoi(id);
|
||||
zstatus = ftdm_span_find(span_id, &span);
|
||||
}
|
||||
|
||||
if (zstatus != FTDM_SUCCESS) {
|
||||
zstatus = ftdm_span_find_by_name(id, &span);
|
||||
} else {
|
||||
spanparameters[paramindex].var = var;
|
||||
spanparameters[paramindex].val = val;
|
||||
paramindex++;
|
||||
}
|
||||
}
|
||||
|
||||
zstatus = ftdm_span_find_by_name(name, &span);
|
||||
if (zstatus != FTDM_SUCCESS) {
|
||||
ftdm_log(FTDM_LOG_ERROR, "Error finding FreeTDM span id:%s name:%s\n", switch_str_nil(id), switch_str_nil(name));
|
||||
ftdm_log(FTDM_LOG_ERROR, "Error finding FreeTDM span %s\n", name);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!span_id) {
|
||||
span_id = ftdm_span_get_id(span);
|
||||
}
|
||||
|
||||
|
||||
if (ftdm_configure_span(span, "libpri", on_clear_channel_signal,
|
||||
"node", o_node,
|
||||
"switch", o_switch,
|
||||
"dp", o_dp,
|
||||
"l1", o_l1,
|
||||
"debug", o_debug,
|
||||
"opts", opts,
|
||||
FTDM_TAG_END) != FTDM_SUCCESS) {
|
||||
ftdm_log(FTDM_LOG_ERROR, "Error starting FreeTDM span %d node: %s switch: %s dp: %s l1: %s debug: %s error: %s\n",
|
||||
span_id, switch_str_nil(o_node), switch_str_nil(o_switch), switch_str_nil(o_dp), switch_str_nil(o_l1), switch_str_nil(o_debug),
|
||||
ftdm_span_get_last_error(span));
|
||||
span_id = ftdm_span_get_id(span);
|
||||
if (ftdm_configure_span_signaling(span, "libpri", on_clear_channel_signal, spanparameters) != FTDM_SUCCESS) {
|
||||
ftdm_log(FTDM_LOG_ERROR, "Error configuring FreeTDM span %s\n", name);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -3206,7 +3138,8 @@ static switch_status_t load_config(void)
|
||||
for (param = switch_xml_child(myspan, "param"); param; param = param->next) {
|
||||
char *var = (char *) switch_xml_attr_soft(param, "name");
|
||||
char *val = (char *) switch_xml_attr_soft(param, "value");
|
||||
if (sizeof(spanparameters)/sizeof(spanparameters[0]) == paramindex) {
|
||||
|
||||
if (ftdm_array_len(spanparameters) - 1 == paramindex) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Too many parameters for boost span, ignoring any parameter after %s\n", var);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1,134 +0,0 @@
|
||||
Index: src/ozmod/ozmod_wanpipe/ozmod_wanpipe.c
|
||||
===================================================================
|
||||
--- src/ozmod/ozmod_wanpipe/ozmod_wanpipe.c (revision 745)
|
||||
+++ src/ozmod/ozmod_wanpipe/ozmod_wanpipe.c (working copy)
|
||||
@@ -98,19 +98,21 @@
|
||||
* so we can have one analong handler thread that will deal with all the idle analog channels for events
|
||||
* the alternative would be for the driver to provide one socket for all of the oob events for all analog channels
|
||||
*/
|
||||
-static __inline__ int tdmv_api_wait_socket(sng_fd_t fd, int timeout, int *flags)
|
||||
+static __inline__ int tdmv_api_wait_socket(zap_channel_t *zchan, int timeout, int *flags)
|
||||
{
|
||||
|
||||
#ifdef LIBSANGOMA_VERSION
|
||||
int err;
|
||||
- sangoma_wait_obj_t sangoma_wait_obj;
|
||||
+ sangoma_wait_obj_t *sangoma_wait_obj = zchan->mod_data;
|
||||
|
||||
- sangoma_init_wait_obj(&sangoma_wait_obj, fd, 1, 1, *flags, SANGOMA_WAIT_OBJ);
|
||||
+ sangoma_init_wait_obj(sangoma_wait_obj, zchan->sockfd, 1, 1, 0, SANGOMA_WAIT_OBJ);
|
||||
|
||||
- err=sangoma_socket_waitfor_many(&sangoma_wait_obj,1 , timeout);
|
||||
+ err = sangoma_socket_waitfor_many(&sangoma_wait_obj, 1, timeout);
|
||||
+
|
||||
if (err > 0) {
|
||||
- *flags=sangoma_wait_obj.flags_out;
|
||||
+ *flags = sangoma_wait_obj.flags_out;
|
||||
}
|
||||
+
|
||||
return err;
|
||||
|
||||
#else
|
||||
@@ -118,7 +120,7 @@
|
||||
int res;
|
||||
|
||||
memset(&pfds[0], 0, sizeof(pfds[0]));
|
||||
- pfds[0].fd = fd;
|
||||
+ pfds[0].fd = zchan->sockfd;
|
||||
pfds[0].events = *flags;
|
||||
res = poll(pfds, 1, timeout);
|
||||
*flags = 0;
|
||||
@@ -200,6 +202,15 @@
|
||||
|
||||
if (sockfd != WP_INVALID_SOCKET && zap_span_add_channel(span, sockfd, type, &chan) == ZAP_SUCCESS) {
|
||||
wanpipe_tdm_api_t tdm_api;
|
||||
+#ifdef LIBSANGOMA_VERSION
|
||||
+ sangoma_wait_obj_t *sangoma_wait_obj;
|
||||
+
|
||||
+ sangoma_wait_obj = malloc(sizeof(*sangoma_wait_obj));
|
||||
+ memset(sangoma_wait_obj, 0, sizeof(*sangoma_wait_obj));
|
||||
+ sangoma_init_wait_obj(sangoma_wait_obj, sockfd, 1, 1, 0, SANGOMA_WAIT_OBJ);
|
||||
+ chan->mod_data = sangoma_wait_obj;
|
||||
+#endif
|
||||
+
|
||||
memset(&tdm_api,0,sizeof(tdm_api));
|
||||
|
||||
chan->physical_span_id = spanno;
|
||||
@@ -211,7 +222,7 @@
|
||||
|
||||
dtmf = "software";
|
||||
|
||||
- /* FIXME: Handle Error Conditino Check for return code */
|
||||
+ /* FIXME: Handle Error Condition Check for return code */
|
||||
err= sangoma_tdm_get_hw_coding(chan->sockfd, &tdm_api);
|
||||
|
||||
if (tdm_api.wp_tdm_cmd.hw_tdm_coding) {
|
||||
@@ -606,7 +617,7 @@
|
||||
inflags |= POLLPRI;
|
||||
}
|
||||
|
||||
- result = tdmv_api_wait_socket(zchan->sockfd, to, &inflags);
|
||||
+ result = tdmv_api_wait_socket(zchan, to, &inflags);
|
||||
|
||||
*flags = ZAP_NO_FLAGS;
|
||||
|
||||
@@ -643,26 +654,30 @@
|
||||
ZIO_SPAN_POLL_EVENT_FUNCTION(wanpipe_poll_event)
|
||||
{
|
||||
#ifdef LIBSANGOMA_VERSION
|
||||
- sangoma_wait_obj_t pfds[ZAP_MAX_CHANNELS_SPAN];
|
||||
+ sangoma_wait_obj_t *pfds[ZAP_MAX_CHANNELS_SPAN] = { 0 };
|
||||
#else
|
||||
struct pollfd pfds[ZAP_MAX_CHANNELS_SPAN];
|
||||
#endif
|
||||
|
||||
uint32_t i, j = 0, k = 0, l = 0;
|
||||
- int objects=0;
|
||||
int r;
|
||||
|
||||
for(i = 1; i <= span->chan_count; i++) {
|
||||
zap_channel_t *zchan = span->channels[i];
|
||||
|
||||
+
|
||||
#ifdef LIBSANGOMA_VERSION
|
||||
- sangoma_init_wait_obj(&pfds[j], zchan->sockfd , 1, 1, POLLPRI, SANGOMA_WAIT_OBJ);
|
||||
+ if (!zchan->mod_data) {
|
||||
+ continue;
|
||||
+ }
|
||||
+ pfds[j] = zchan->mod_data;
|
||||
+
|
||||
#else
|
||||
memset(&pfds[j], 0, sizeof(pfds[j]));
|
||||
pfds[j].fd = span->channels[i]->sockfd;
|
||||
pfds[j].events = POLLPRI;
|
||||
#endif
|
||||
- objects++;
|
||||
+
|
||||
/* The driver probably should be able to do this wink/flash/ringing by itself this is sort of a hack to make it work! */
|
||||
|
||||
if (zap_test_flag(zchan, ZAP_CHANNEL_WINK) || zap_test_flag(zchan, ZAP_CHANNEL_FLASH)) {
|
||||
@@ -703,7 +718,7 @@
|
||||
ms = l;
|
||||
}
|
||||
#ifdef LIBSANGOMA_VERSION
|
||||
- r = sangoma_socket_waitfor_many(pfds,objects,ms);
|
||||
+ r = sangoma_socket_waitfor_many(pfds, j, ms);
|
||||
#else
|
||||
r = poll(pfds, j, ms);
|
||||
#endif
|
||||
@@ -935,6 +950,15 @@
|
||||
*/
|
||||
static ZIO_CHANNEL_DESTROY_FUNCTION(wanpipe_channel_destroy)
|
||||
{
|
||||
+ sangoma_wait_obj_t *sangoma_wait_obj;
|
||||
+
|
||||
+ if (zchan->mod_data) {
|
||||
+ sangoma_wait_obj = zchan->mod_data;
|
||||
+ zchan->mod_data = NULL;
|
||||
+ sangoma_release_wait_obj(sangoma_wait_obj);
|
||||
+ free(sangoma_wait_obj);
|
||||
+ }
|
||||
+
|
||||
if (zchan->sockfd > -1) {
|
||||
close(zchan->sockfd);
|
||||
zchan->sockfd = WP_INVALID_SOCKET;
|
||||
@@ -1751,7 +1751,7 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_open_chan(ftdm_channel_t *ftdmchan)
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_IN_ALARM)) {
|
||||
if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_IN_ALARM) && !ftdm_test_flag(ftdmchan->span, FTDM_SPAN_PWR_SAVING)) {
|
||||
snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "%s", "Channel is alarmed\n");
|
||||
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "Cannot open channel when is alarmed\n");
|
||||
goto done;
|
||||
@@ -1915,6 +1915,11 @@ FT_DECLARE(ftdm_trunk_type_t) ftdm_span_get_trunk_type(const ftdm_span_t *span)
|
||||
return span->trunk_type;
|
||||
}
|
||||
|
||||
FT_DECLARE(const char *) ftdm_span_get_trunk_type_str(const ftdm_span_t *span)
|
||||
{
|
||||
return ftdm_trunk_type2str(span->trunk_type);
|
||||
}
|
||||
|
||||
FT_DECLARE(uint32_t) ftdm_span_get_id(const ftdm_span_t *span)
|
||||
{
|
||||
return span->span_id;
|
||||
@@ -2114,6 +2119,15 @@ FT_DECLARE(ftdm_caller_data_t *) ftdm_channel_get_caller_data(ftdm_channel_t *ft
|
||||
return &ftdmchan->caller_data;
|
||||
}
|
||||
|
||||
FT_DECLARE(int) ftdm_channel_get_state(const ftdm_channel_t *ftdmchan)
|
||||
{
|
||||
int state;
|
||||
ftdm_channel_lock(ftdmchan);
|
||||
state = ftdmchan->state;
|
||||
ftdm_channel_unlock(ftdmchan);
|
||||
return state;
|
||||
}
|
||||
|
||||
FT_DECLARE(const char *) ftdm_channel_get_state_str(const ftdm_channel_t *ftdmchan)
|
||||
{
|
||||
const char *state;
|
||||
@@ -2123,6 +2137,15 @@ FT_DECLARE(const char *) ftdm_channel_get_state_str(const ftdm_channel_t *ftdmch
|
||||
return state;
|
||||
}
|
||||
|
||||
FT_DECLARE(int) ftdm_channel_get_last_state(const ftdm_channel_t *ftdmchan)
|
||||
{
|
||||
int last_state;
|
||||
ftdm_channel_lock(ftdmchan);
|
||||
last_state = ftdmchan->last_state;
|
||||
ftdm_channel_unlock(ftdmchan);
|
||||
return last_state;
|
||||
}
|
||||
|
||||
FT_DECLARE(const char *) ftdm_channel_get_last_state_str(const ftdm_channel_t *ftdmchan)
|
||||
{
|
||||
const char *state;
|
||||
@@ -3927,6 +3950,11 @@ static ftdm_status_t ftdm_set_channels_alarms(ftdm_span_t *span, int currindex)
|
||||
ftdm_log(FTDM_LOG_ERROR, "%d:%d: Failed to get alarms\n", span->channels[chan_index]->physical_span_id, span->channels[chan_index]->physical_chan_id);
|
||||
return FTDM_FAIL;
|
||||
}
|
||||
if (span->channels[chan_index]->alarm_flags) {
|
||||
ftdm_set_flag_locked(span->channels[chan_index], FTDM_CHANNEL_IN_ALARM);
|
||||
} else {
|
||||
ftdm_clear_flag_locked(span->channels[chan_index], FTDM_CHANNEL_IN_ALARM);
|
||||
}
|
||||
}
|
||||
return FTDM_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -484,7 +484,7 @@ static FIO_SPAN_NEXT_EVENT_FUNCTION(m3ua_next_event)
|
||||
|
||||
static FIO_SPAN_DESTROY_FUNCTION(m3ua_span_destroy)
|
||||
{
|
||||
m3ua_span_data_t *span_data = (m3ua_span_data_t *) span->mod_data;
|
||||
m3ua_span_data_t *span_data = (m3ua_span_data_t *) span->io_data;
|
||||
|
||||
if (span_data) {
|
||||
ftdm_safe_free(span_data);
|
||||
@@ -494,8 +494,8 @@ static FIO_SPAN_DESTROY_FUNCTION(m3ua_span_destroy)
|
||||
}
|
||||
static FIO_CHANNEL_DESTROY_FUNCTION(m3ua_channel_destroy)
|
||||
{
|
||||
m3ua_chan_data_t *chan_data = (m3ua_chan_data_t *) ftdmchan->mod_data;
|
||||
m3ua_span_data_t *span_data = (m3ua_span_data_t *) ftdmchan->span->mod_data;
|
||||
m3ua_chan_data_t *chan_data = (m3ua_chan_data_t *) ftdmchan->io_data;
|
||||
m3ua_span_data_t *span_data = (m3ua_span_data_t *) ftdmchan->span->io_data;
|
||||
|
||||
if (!chan_data) {
|
||||
return FTDM_FAIL;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+22
-13
@@ -1,23 +1,23 @@
|
||||
/*
|
||||
* Copyright (c) 2007, Anthony Minessale II
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
*
|
||||
* * Neither the name of the original author; nor the names of any contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
@@ -33,7 +33,6 @@
|
||||
|
||||
#ifndef FTDM_ISDN_H
|
||||
#define FTDM_ISDN_H
|
||||
#include "freetdm.h"
|
||||
|
||||
#define DEFAULT_DIGIT_TIMEOUT 10000 /* default overlap timeout: 10 seconds */
|
||||
|
||||
@@ -42,17 +41,23 @@ typedef enum {
|
||||
FTDM_ISDN_OPT_NONE = 0,
|
||||
FTDM_ISDN_OPT_SUGGEST_CHANNEL = (1 << 0),
|
||||
FTDM_ISDN_OPT_OMIT_DISPLAY_IE = (1 << 1), /*!< Do not send Caller name in outgoing SETUP message (= Display IE) */
|
||||
FTDM_ISDN_OPT_DISABLE_TONES = (1 << 2), /*!< Disable tone generating thread (NT mode) */
|
||||
FTDM_ISDN_OPT_DISABLE_TONES = (1 << 2), /*!< Disable tone generating thread (NT mode) */
|
||||
|
||||
FTDM_ISDN_OPT_MAX = (2 << 0)
|
||||
} ftdm_isdn_opts_t;
|
||||
|
||||
typedef enum {
|
||||
FTDM_ISDN_RUNNING = (1 << 0),
|
||||
FTDM_ISDN_TONES_RUNNING = (1 << 1),
|
||||
FTDM_ISDN_STOP = (1 << 2)
|
||||
FTDM_ISDN_RUNNING = (1 << 0),
|
||||
FTDM_ISDN_TONES_RUNNING = (1 << 1),
|
||||
FTDM_ISDN_STOP = (1 << 2),
|
||||
|
||||
FTDM_ISDN_CAPTURE = (1 << 3),
|
||||
FTDM_ISDN_CAPTURE_L3ONLY = (1 << 4)
|
||||
} ftdm_isdn_flag_t;
|
||||
|
||||
#ifdef HAVE_PCAP
|
||||
struct pcap_context;
|
||||
#endif
|
||||
|
||||
struct ftdm_isdn_data {
|
||||
Q921Data_t q921;
|
||||
@@ -60,6 +65,7 @@ struct ftdm_isdn_data {
|
||||
ftdm_channel_t *dchan;
|
||||
ftdm_channel_t *dchans[2];
|
||||
struct ftdm_sigmsg sigmsg;
|
||||
fio_signal_cb_t sig_cb;
|
||||
uint32_t flags;
|
||||
int32_t mode;
|
||||
int32_t digit_timeout;
|
||||
@@ -67,6 +73,9 @@ struct ftdm_isdn_data {
|
||||
ftdm_caller_data_t *outbound_crv[32768];
|
||||
ftdm_channel_t *channels_local_crv[32768];
|
||||
ftdm_channel_t *channels_remote_crv[32768];
|
||||
#ifdef HAVE_PCAP
|
||||
struct pcap_context *pcap;
|
||||
#endif
|
||||
};
|
||||
|
||||
typedef struct ftdm_isdn_data ftdm_isdn_data_t;
|
||||
@@ -75,7 +84,7 @@ typedef struct ftdm_isdn_data ftdm_isdn_data_t;
|
||||
/* b-channel private data */
|
||||
struct ftdm_isdn_bchan_data
|
||||
{
|
||||
L2ULONG digit_timeout;
|
||||
int32_t digit_timeout;
|
||||
};
|
||||
|
||||
typedef struct ftdm_isdn_bchan_data ftdm_isdn_bchan_data_t;
|
||||
@@ -91,6 +100,6 @@ typedef struct ftdm_isdn_bchan_data ftdm_isdn_bchan_data_t;
|
||||
* c-basic-offset:4
|
||||
* End:
|
||||
* For VIM:
|
||||
* vim:set softtabstop=4 shiftwidth=4 tabstop=4:
|
||||
* vim:set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
|
||||
*/
|
||||
|
||||
@@ -1,316 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8.00"
|
||||
Name="ftmod_isdn"
|
||||
ProjectGUID="{729344A5-D5E9-434D-8EE8-AF8C6C795D15}"
|
||||
RootNamespace="ftmod_isdn"
|
||||
Keyword="Win32Proj"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\isdn\include;..\..\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FTMOD_ISDN_EXPORTS;_CRT_SECURE_NO_WARNINGS"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
WarnAsError="true"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
AdditionalIncludeDirectories="..\..\isdn\include;..\..\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FTMOD_ISDN_EXPORTS;_CRT_SECURE_NO_WARNINGS"
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
WarnAsError="true"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\isdn\5ESSmes.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\5ESSStateNT.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\5ESSStateTE.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\DMSmes.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\DMSStateNT.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\DMSStateTE.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\EuroISDNStateNT.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\EuroISDNStateTE.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\mfifo.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\nationalmes.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\nationalStateNT.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\nationalStateTE.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="ftmod_isdn.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\Q921.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\Q931.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\Q931api.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\Q931ie.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\Q931mes.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\Q931StateNT.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\Q931StateTE.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\Q932mes.c"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\isdn\include\5ESS.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\include\DMS.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\include\mfifo.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\include\national.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\include\Q921.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\include\Q921priv.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\include\Q931.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\include\Q931ie.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\isdn\include\Q932.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="ftdm_isdn.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -42,8 +42,9 @@ typedef enum {
|
||||
FTMOD_LIBPRI_OPT_SUGGEST_CHANNEL = (1 << 0),
|
||||
FTMOD_LIBPRI_OPT_OMIT_DISPLAY_IE = (1 << 1),
|
||||
FTMOD_LIBPRI_OPT_OMIT_REDIRECTING_NUMBER_IE = (1 << 2),
|
||||
|
||||
FTMOD_LIBPRI_OPT_MAX = (1 << 3)
|
||||
FTMOD_LIBPRI_OPT_FACILITY_AOC = (1 << 3),
|
||||
|
||||
FTMOD_LIBPRI_OPT_MAX = (1 << 4)
|
||||
} ftdm_isdn_opts_t;
|
||||
|
||||
typedef enum {
|
||||
@@ -53,35 +54,20 @@ typedef enum {
|
||||
|
||||
struct ftdm_libpri_data {
|
||||
ftdm_channel_t *dchan;
|
||||
ftdm_channel_t *dchans[2];
|
||||
struct ftdm_sigmsg sigmsg;
|
||||
uint32_t flags;
|
||||
int32_t mode;
|
||||
ftdm_isdn_opts_t opts;
|
||||
uint32_t flags;
|
||||
uint32_t debug_mask;
|
||||
|
||||
int node;
|
||||
int pswitch;
|
||||
char *dialplan;
|
||||
unsigned int l1;
|
||||
unsigned int dp;
|
||||
|
||||
int debug;
|
||||
int mode;
|
||||
int dialect;
|
||||
unsigned int layer1;
|
||||
unsigned int ton;
|
||||
|
||||
lpwrap_pri_t spri;
|
||||
};
|
||||
|
||||
typedef struct ftdm_libpri_data ftdm_libpri_data_t;
|
||||
|
||||
|
||||
/* b-channel private data */
|
||||
struct ftdm_isdn_bchan_data
|
||||
{
|
||||
int32_t digit_timeout;
|
||||
};
|
||||
|
||||
typedef struct ftdm_isdn_bchan_data ftdm_isdn_bchan_data_t;
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
/* For Emacs:
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
/*
|
||||
* Copyright (c) 2009, Anthony Minessale II
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
*
|
||||
* * Neither the name of the original author; nor the names of any contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
@@ -35,8 +35,8 @@
|
||||
|
||||
#include "private/ftdm_core.h"
|
||||
#include "lpwrap_pri.h"
|
||||
#ifndef HAVE_GETTIMEOFDAY
|
||||
|
||||
#ifndef HAVE_GETTIMEOFDAY
|
||||
#ifdef WIN32
|
||||
#include <mmsystem.h>
|
||||
|
||||
@@ -92,7 +92,7 @@ static struct lpwrap_pri_event_list LPWRAP_PRI_EVENT_LIST[] = {
|
||||
{8, LPWRAP_PRI_EVENT_ANSWER, "ANSWER"},
|
||||
{9, LPWRAP_PRI_EVENT_HANGUP_ACK, "HANGUP_ACK"},
|
||||
{10, LPWRAP_PRI_EVENT_RESTART_ACK, "RESTART_ACK"},
|
||||
{11, LPWRAP_PRI_EVENT_FACNAME, "FACNAME"},
|
||||
{11, LPWRAP_PRI_EVENT_FACILITY, "FACILITY"},
|
||||
{12, LPWRAP_PRI_EVENT_INFO_RECEIVED, "INFO_RECEIVED"},
|
||||
{13, LPWRAP_PRI_EVENT_PROCEEDING, "PROCEEDING"},
|
||||
{14, LPWRAP_PRI_EVENT_SETUP_ACK, "SETUP_ACK"},
|
||||
@@ -106,7 +106,10 @@ static struct lpwrap_pri_event_list LPWRAP_PRI_EVENT_LIST[] = {
|
||||
#define LINE "--------------------------------------------------------------------------------"
|
||||
|
||||
const char *lpwrap_pri_event_str(lpwrap_pri_event_t event_id)
|
||||
{
|
||||
{
|
||||
if (event_id < 0 || event_id >= LPWRAP_PRI_EVENT_MAX)
|
||||
return "";
|
||||
|
||||
return LPWRAP_PRI_EVENT_LIST[event_id].name;
|
||||
}
|
||||
|
||||
@@ -114,8 +117,8 @@ static int __pri_lpwrap_read(struct pri *pri, void *buf, int buflen)
|
||||
{
|
||||
struct lpwrap_pri *spri = (struct lpwrap_pri *) pri_get_userdata(pri);
|
||||
ftdm_size_t len = buflen;
|
||||
int res;
|
||||
ftdm_status_t zst;
|
||||
int res;
|
||||
|
||||
if ((zst = ftdm_channel_read(spri->dchan, buf, &len)) != FTDM_SUCCESS) {
|
||||
if (zst == FTDM_FAIL) {
|
||||
@@ -124,31 +127,31 @@ static int __pri_lpwrap_read(struct pri *pri, void *buf, int buflen)
|
||||
} else {
|
||||
ftdm_log(FTDM_LOG_CRIT, "span %d D-READ TIMEOUT\n", spri->span->span_id);
|
||||
}
|
||||
|
||||
|
||||
ftdm_clear_flag(spri, LPWRAP_PRI_READY);
|
||||
return -1;
|
||||
}
|
||||
spri->errs = 0;
|
||||
res = (int)len;
|
||||
memset(&((unsigned char*)buf)[res],0,2);
|
||||
res+=2;
|
||||
|
||||
memset(&((unsigned char*)buf)[res], 0, 2);
|
||||
res += 2;
|
||||
|
||||
#ifdef IODEBUG
|
||||
{
|
||||
char bb[2048] = { 0 };
|
||||
|
||||
print_hex_bytes(buf, res - 2, bb, sizeof(bb));
|
||||
ftdm_log(FTDM_LOG_DEBUG, "READ %d\n", res-2);
|
||||
ftdm_log(FTDM_LOG_DEBUG, "READ %d\n", res - 2);
|
||||
}
|
||||
#endif
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static int __pri_lpwrap_write(struct pri *pri, void *buf, int buflen)
|
||||
{
|
||||
struct lpwrap_pri *spri = (struct lpwrap_pri *) pri_get_userdata(pri);
|
||||
ftdm_size_t len = buflen -2;
|
||||
ftdm_size_t len = buflen - 2;
|
||||
|
||||
if (ftdm_channel_write(spri->dchan, buf, buflen, &len) != FTDM_SUCCESS) {
|
||||
ftdm_log(FTDM_LOG_CRIT, "span %d D-WRITE FAIL! [%s]\n", spri->span->span_id, spri->dchan->last_error);
|
||||
@@ -161,11 +164,10 @@ static int __pri_lpwrap_write(struct pri *pri, void *buf, int buflen)
|
||||
char bb[2048] = { 0 };
|
||||
|
||||
print_hex_bytes(buf, buflen - 2, bb, sizeof(bb));
|
||||
ftdm_log(FTDM_LOG_DEBUG, "WRITE %d\n", (int)buflen-2);
|
||||
ftdm_log(FTDM_LOG_DEBUG, "WRITE %d\n", (int)buflen - 2);
|
||||
}
|
||||
#endif
|
||||
|
||||
return (int) buflen;
|
||||
return (int)buflen;
|
||||
}
|
||||
|
||||
int lpwrap_init_pri(struct lpwrap_pri *spri, ftdm_span_t *span, ftdm_channel_t *dchan, int swtype, int node, int debug)
|
||||
@@ -173,21 +175,63 @@ int lpwrap_init_pri(struct lpwrap_pri *spri, ftdm_span_t *span, ftdm_channel_t *
|
||||
int ret = -1;
|
||||
|
||||
memset(spri, 0, sizeof(struct lpwrap_pri));
|
||||
|
||||
spri->dchan = dchan;
|
||||
spri->span = span;
|
||||
spri->span = span;
|
||||
|
||||
if (spri->dchan && (spri->pri = pri_new_cb(spri->dchan->sockfd, node, swtype, __pri_lpwrap_read, __pri_lpwrap_write, spri))){
|
||||
unsigned char buf[4] = { 0 };
|
||||
size_t buflen = sizeof(buf), len = 0;
|
||||
pri_set_debug(spri->pri, debug);
|
||||
ret = 0;
|
||||
|
||||
ftdm_channel_write(spri->dchan, buf, buflen, &len);
|
||||
} else {
|
||||
fprintf(stderr, "Unable to create PRI\n");
|
||||
if (!spri->dchan) {
|
||||
ftdm_log(FTDM_LOG_ERROR, "No D-Channel available, unable to create PRI\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
if ((spri->pri = pri_new_cb(spri->dchan->sockfd, node, swtype, __pri_lpwrap_read, __pri_lpwrap_write, spri))) {
|
||||
unsigned char buf[4] = { 0 };
|
||||
size_t buflen = sizeof(buf), len = 0;
|
||||
|
||||
pri_set_debug(spri->pri, debug);
|
||||
#ifdef HAVE_LIBPRI_AOC
|
||||
pri_aoc_events_enable(spri->pri, 1);
|
||||
#endif
|
||||
ftdm_channel_write(spri->dchan, buf, buflen, &len);
|
||||
|
||||
ret = 0;
|
||||
} else {
|
||||
ftdm_log(FTDM_LOG_ERROR, "Unable to create PRI\n");
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int lpwrap_init_bri(struct lpwrap_pri *spri, ftdm_span_t *span, ftdm_channel_t *dchan, int swtype, int node, int ptp, int debug)
|
||||
{
|
||||
int ret = -1;
|
||||
|
||||
#ifdef HAVE_LIBPRI_BRI
|
||||
memset(spri, 0, sizeof(struct lpwrap_pri));
|
||||
spri->dchan = dchan;
|
||||
spri->span = span;
|
||||
|
||||
if (!spri->dchan) {
|
||||
ftdm_log(FTDM_LOG_ERROR, "No D-Channel available, unable to create BRI\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
if ((spri->pri = pri_new_bri_cb(spri->dchan->sockfd, ptp, node, swtype, __pri_lpwrap_read, __pri_lpwrap_write, spri))) {
|
||||
unsigned char buf[4] = { 0 };
|
||||
size_t buflen = sizeof(buf), len = 0;
|
||||
|
||||
pri_set_debug(spri->pri, debug);
|
||||
#ifdef HAVE_LIBPRI_AOC
|
||||
pri_aoc_events_enable(spri->pri, 1);
|
||||
#endif
|
||||
ftdm_channel_write(spri->dchan, buf, buflen, &len);
|
||||
|
||||
ret = 0;
|
||||
} else {
|
||||
ftdm_log(FTDM_LOG_ERROR, "Unable to create BRI\n");
|
||||
}
|
||||
#else
|
||||
ftdm_log(FTDM_LOG_ERROR, "Installed libpri version (%s) has no BRI support\n",
|
||||
pri_get_version());
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -195,11 +239,11 @@ int lpwrap_init_pri(struct lpwrap_pri *spri, ftdm_span_t *span, ftdm_channel_t *
|
||||
int lpwrap_one_loop(struct lpwrap_pri *spri)
|
||||
{
|
||||
fd_set rfds, efds;
|
||||
struct timeval now = {0,0}, *next;
|
||||
pri_event *event;
|
||||
struct timeval now = {0,0}, *next = NULL;
|
||||
pri_event *event = NULL;
|
||||
event_handler handler;
|
||||
int sel;
|
||||
|
||||
int sel;
|
||||
|
||||
if (spri->on_loop) {
|
||||
if ((sel = spri->on_loop(spri)) < 0) {
|
||||
return sel;
|
||||
@@ -231,9 +275,6 @@ int lpwrap_one_loop(struct lpwrap_pri *spri)
|
||||
now.tv_usec = 100000;
|
||||
|
||||
sel = select(pri_fd(spri->pri) + 1, &rfds, NULL, &efds, &now);
|
||||
|
||||
event = NULL;
|
||||
|
||||
if (!sel) {
|
||||
if ((next = pri_schedule_next(spri->pri))) {
|
||||
gettimeofday(&now, NULL);
|
||||
@@ -248,46 +289,40 @@ int lpwrap_one_loop(struct lpwrap_pri *spri)
|
||||
|
||||
if (event) {
|
||||
/* 0 is catchall event handler */
|
||||
if ((handler = spri->eventmap[event->e] ? spri->eventmap[event->e] : spri->eventmap[0] ? spri->eventmap[0] : NULL)) {
|
||||
if (event->e < 0 || event->e >= LPWRAP_PRI_EVENT_MAX) {
|
||||
handler = spri->eventmap[0];
|
||||
} else if (spri->eventmap[event->e]) {
|
||||
handler = spri->eventmap[event->e];
|
||||
} else {
|
||||
handler = spri->eventmap[0];
|
||||
}
|
||||
|
||||
if (handler) {
|
||||
handler(spri, event->e, event);
|
||||
} else {
|
||||
ftdm_log(FTDM_LOG_CRIT, "No event handler found for event %d.\n", event->e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return sel;
|
||||
|
||||
|
||||
if ((handler = spri->eventmap[LPWRAP_PRI_EVENT_IO_FAIL] ? spri->eventmap[LPWRAP_PRI_EVENT_IO_FAIL] : spri->eventmap[0] ? spri->eventmap[0] : NULL)) {
|
||||
handler(spri, LPWRAP_PRI_EVENT_IO_FAIL, NULL);
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
int lpwrap_run_pri(struct lpwrap_pri *spri)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
for (;;){
|
||||
ret = lpwrap_one_loop(spri);
|
||||
|
||||
if (ret < 0) {
|
||||
|
||||
for (;;) {
|
||||
if ((ret = lpwrap_one_loop(spri)) < 0) {
|
||||
#ifndef WIN32 //This needs to be adressed fror WIN32 still
|
||||
if (errno == EINTR){
|
||||
/* Igonore an interrupted system call */
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
ftdm_log(FTDM_LOG_CRIT, "Error = %i [%s]\n", ret, strerror(errno));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
/* For Emacs:
|
||||
@@ -300,4 +335,3 @@ int lpwrap_run_pri(struct lpwrap_pri *spri)
|
||||
* For VIM:
|
||||
* vim:set softtabstop=4 shiftwidth=4 tabstop=4:
|
||||
*/
|
||||
|
||||
|
||||
@@ -51,7 +51,11 @@ typedef enum {
|
||||
LPWRAP_PRI_EVENT_ANSWER = PRI_EVENT_ANSWER,
|
||||
LPWRAP_PRI_EVENT_HANGUP_ACK = PRI_EVENT_HANGUP_ACK,
|
||||
LPWRAP_PRI_EVENT_RESTART_ACK = PRI_EVENT_RESTART_ACK,
|
||||
LPWRAP_PRI_EVENT_FACNAME = PRI_EVENT_FACNAME,
|
||||
#ifdef PRI_EVENT_FACILITY
|
||||
LPWRAP_PRI_EVENT_FACILITY = PRI_EVENT_FACILITY,
|
||||
#else
|
||||
LPWRAP_PRI_EVENT_FACILITY = PRI_EVENT_FACNAME,
|
||||
#endif
|
||||
LPWRAP_PRI_EVENT_INFO_RECEIVED = PRI_EVENT_INFO_RECEIVED,
|
||||
LPWRAP_PRI_EVENT_PROCEEDING = PRI_EVENT_PROCEEDING,
|
||||
LPWRAP_PRI_EVENT_SETUP_ACK = PRI_EVENT_SETUP_ACK,
|
||||
@@ -121,6 +125,8 @@ struct lpwrap_pri_event_list {
|
||||
const char *lpwrap_pri_event_str(lpwrap_pri_event_t event_id);
|
||||
int lpwrap_one_loop(struct lpwrap_pri *spri);
|
||||
int lpwrap_init_pri(struct lpwrap_pri *spri, ftdm_span_t *span, ftdm_channel_t *dchan, int swtype, int node, int debug);
|
||||
int lpwrap_init_bri(struct lpwrap_pri *spri, ftdm_span_t *span, ftdm_channel_t *dchan, int swtype, int node, int ptp, int debug);
|
||||
int lpwrap_run_pri(struct lpwrap_pri *spri);
|
||||
#define lpwrap_run_bri(x) lpwrap_run_pri(x)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -266,7 +266,7 @@ PK_VOID PK_CALLBACK media_out_callback(PKH_TPikaEvent *event)
|
||||
{
|
||||
PK_STATUS pk_status;
|
||||
ftdm_channel_t *ftdmchan = event->userData;
|
||||
pika_chan_data_t *chan_data = (pika_chan_data_t *) ftdmchan->mod_data;
|
||||
pika_chan_data_t *chan_data = (pika_chan_data_t *) ftdmchan->io_data;
|
||||
|
||||
//PK_CHAR event_text[PKH_EVENT_MAX_NAME_LENGTH];
|
||||
//PKH_EVENT_GetText(event->id, event_text, sizeof(event_text));
|
||||
@@ -345,8 +345,8 @@ static unsigned pika_open_range(ftdm_span_t *span, unsigned boardno, unsigned sp
|
||||
|
||||
}
|
||||
|
||||
if (span->mod_data) {
|
||||
span_data = span->mod_data;
|
||||
if (span->io_data) {
|
||||
span_data = span->io_data;
|
||||
} else {
|
||||
span_data = ftdm_malloc(sizeof(*span_data));
|
||||
assert(span_data != NULL);
|
||||
@@ -364,7 +364,7 @@ static unsigned pika_open_range(ftdm_span_t *span, unsigned boardno, unsigned sp
|
||||
|
||||
//PKH_QUEUE_Attach(span_data->event_queue, globals.open_boards[boardno], NULL);
|
||||
|
||||
span->mod_data = span_data;
|
||||
span->io_data = span_data;
|
||||
}
|
||||
|
||||
if (type == FTDM_CHAN_TYPE_FXS || type == FTDM_CHAN_TYPE_FXO) {
|
||||
@@ -380,7 +380,7 @@ static unsigned pika_open_range(ftdm_span_t *span, unsigned boardno, unsigned sp
|
||||
assert(chan_data);
|
||||
memset(chan_data, 0, sizeof(*chan_data));
|
||||
ftdm_span_add_channel(span, 0, type, &chan);
|
||||
chan->mod_data = chan_data;
|
||||
chan->io_data = chan_data;
|
||||
|
||||
if ((type == FTDM_CHAN_TYPE_B || type == FTDM_CHAN_TYPE_DQ921) && !span_data->handle) {
|
||||
PKH_TBoardConfig boardConfig;
|
||||
@@ -680,7 +680,7 @@ static FIO_CONFIGURE_SPAN_FUNCTION(pika_configure_span)
|
||||
*/
|
||||
static FIO_OPEN_FUNCTION(pika_open)
|
||||
{
|
||||
pika_chan_data_t *chan_data = (pika_chan_data_t *) ftdmchan->mod_data;
|
||||
pika_chan_data_t *chan_data = (pika_chan_data_t *) ftdmchan->io_data;
|
||||
|
||||
if (!chan_data && !ftdm_test_flag(chan_data, PK_FLAG_READY)) {
|
||||
return FTDM_FAIL;
|
||||
@@ -715,7 +715,7 @@ static FIO_CLOSE_FUNCTION(pika_close)
|
||||
*/
|
||||
static FIO_WAIT_FUNCTION(pika_wait)
|
||||
{
|
||||
pika_chan_data_t *chan_data = (pika_chan_data_t *) ftdmchan->mod_data;
|
||||
pika_chan_data_t *chan_data = (pika_chan_data_t *) ftdmchan->io_data;
|
||||
PK_STATUS status;
|
||||
ftdm_wait_flag_t myflags = *flags;
|
||||
PK_CHAR event_text[PKH_EVENT_MAX_NAME_LENGTH];
|
||||
@@ -754,7 +754,7 @@ static FIO_WAIT_FUNCTION(pika_wait)
|
||||
*/
|
||||
static FIO_READ_FUNCTION(pika_read)
|
||||
{
|
||||
pika_chan_data_t *chan_data = (pika_chan_data_t *) ftdmchan->mod_data;
|
||||
pika_chan_data_t *chan_data = (pika_chan_data_t *) ftdmchan->io_data;
|
||||
PK_STATUS status;
|
||||
PK_CHAR event_text[PKH_EVENT_MAX_NAME_LENGTH];
|
||||
uint32_t len;
|
||||
@@ -795,7 +795,7 @@ static FIO_READ_FUNCTION(pika_read)
|
||||
*/
|
||||
static FIO_WRITE_FUNCTION(pika_write)
|
||||
{
|
||||
pika_chan_data_t *chan_data = (pika_chan_data_t *) ftdmchan->mod_data;
|
||||
pika_chan_data_t *chan_data = (pika_chan_data_t *) ftdmchan->io_data;
|
||||
PK_STATUS status;
|
||||
|
||||
if (ftdmchan->type == FTDM_CHAN_TYPE_DQ921) {
|
||||
@@ -821,8 +821,8 @@ static FIO_WRITE_FUNCTION(pika_write)
|
||||
*/
|
||||
static FIO_COMMAND_FUNCTION(pika_command)
|
||||
{
|
||||
pika_chan_data_t *chan_data = (pika_chan_data_t *) ftdmchan->mod_data;
|
||||
//pika_span_data_t *span_data = (pika_span_data_t *) ftdmchan->span->mod_data;
|
||||
pika_chan_data_t *chan_data = (pika_chan_data_t *) ftdmchan->io_data;
|
||||
//pika_span_data_t *span_data = (pika_span_data_t *) ftdmchan->span->io_data;
|
||||
PK_STATUS pk_status;
|
||||
ftdm_status_t status = FTDM_SUCCESS;
|
||||
|
||||
@@ -956,7 +956,7 @@ static FIO_COMMAND_FUNCTION(pika_command)
|
||||
*/
|
||||
static FIO_SPAN_POLL_EVENT_FUNCTION(pika_poll_event)
|
||||
{
|
||||
pika_span_data_t *span_data = (pika_span_data_t *) span->mod_data;
|
||||
pika_span_data_t *span_data = (pika_span_data_t *) span->io_data;
|
||||
PK_STATUS status;
|
||||
PK_CHAR event_text[PKH_EVENT_MAX_NAME_LENGTH];
|
||||
|
||||
@@ -1025,7 +1025,7 @@ static FIO_SPAN_POLL_EVENT_FUNCTION(pika_poll_event)
|
||||
for(x = 1; x <= span->chan_count; x++) {
|
||||
ftdmchan = span->channels[x];
|
||||
assert(ftdmchan != NULL);
|
||||
chan_data = (pika_chan_data_t *) ftdmchan->mod_data;
|
||||
chan_data = (pika_chan_data_t *) ftdmchan->io_data;
|
||||
assert(chan_data != NULL);
|
||||
|
||||
|
||||
@@ -1042,7 +1042,7 @@ static FIO_SPAN_POLL_EVENT_FUNCTION(pika_poll_event)
|
||||
//ftdm_log(FTDM_LOG_DEBUG, "Event: %s\n", event_text);
|
||||
|
||||
if (ftdmchan) {
|
||||
pika_chan_data_t *chan_data = (pika_chan_data_t *) ftdmchan->mod_data;
|
||||
pika_chan_data_t *chan_data = (pika_chan_data_t *) ftdmchan->io_data;
|
||||
|
||||
assert(chan_data != NULL);
|
||||
ftdm_set_flag(ftdmchan, FTDM_CHANNEL_EVENT);
|
||||
@@ -1068,7 +1068,7 @@ static FIO_SPAN_NEXT_EVENT_FUNCTION(pika_next_event)
|
||||
|
||||
for(i = 1; i <= span->chan_count; i++) {
|
||||
if (ftdm_test_flag(span->channels[i], FTDM_CHANNEL_EVENT)) {
|
||||
pika_chan_data_t *chan_data = (pika_chan_data_t *) span->channels[i]->mod_data;
|
||||
pika_chan_data_t *chan_data = (pika_chan_data_t *) span->channels[i]->io_data;
|
||||
PK_CHAR event_text[PKH_EVENT_MAX_NAME_LENGTH];
|
||||
|
||||
ftdm_clear_flag(span->channels[i], FTDM_CHANNEL_EVENT);
|
||||
@@ -1207,7 +1207,7 @@ static FIO_SPAN_NEXT_EVENT_FUNCTION(pika_next_event)
|
||||
*/
|
||||
static FIO_SPAN_DESTROY_FUNCTION(pika_span_destroy)
|
||||
{
|
||||
pika_span_data_t *span_data = (pika_span_data_t *) span->mod_data;
|
||||
pika_span_data_t *span_data = (pika_span_data_t *) span->io_data;
|
||||
|
||||
if (span_data) {
|
||||
PKH_QUEUE_Destroy(span_data->event_queue);
|
||||
@@ -1224,8 +1224,8 @@ static FIO_SPAN_DESTROY_FUNCTION(pika_span_destroy)
|
||||
*/
|
||||
static FIO_CHANNEL_DESTROY_FUNCTION(pika_channel_destroy)
|
||||
{
|
||||
pika_chan_data_t *chan_data = (pika_chan_data_t *) ftdmchan->mod_data;
|
||||
pika_span_data_t *span_data = (pika_span_data_t *) ftdmchan->span->mod_data;
|
||||
pika_chan_data_t *chan_data = (pika_chan_data_t *) ftdmchan->io_data;
|
||||
pika_span_data_t *span_data = (pika_span_data_t *) ftdmchan->span->io_data;
|
||||
|
||||
if (!chan_data) {
|
||||
return FTDM_FAIL;
|
||||
|
||||
@@ -31,11 +31,15 @@
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#ifdef __linux__
|
||||
#ifndef _BSD_SOURCE
|
||||
#define _BSD_SOURCE /* for strsep() */
|
||||
#endif
|
||||
#include <syscall.h>
|
||||
#include <poll.h>
|
||||
#include <string.h>
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
#include <openr2.h>
|
||||
#include "freetdm.h"
|
||||
#include "private/ftdm_core.h"
|
||||
@@ -403,6 +407,7 @@ static void ftdm_r2_on_call_init(openr2_chan_t *r2chan)
|
||||
if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_INUSE)) {
|
||||
ftdm_log_chan(ftdmchan, FTDM_LOG_CRIT, "Cannot start call when channel is in use (state = %s)\n", ftdm_channel_state2str(ftdmchan->state));
|
||||
ftdm_mutex_unlock(ftdmchan->mutex);
|
||||
return;
|
||||
}
|
||||
|
||||
if (ftdmchan->state != FTDM_CHANNEL_STATE_DOWN) {
|
||||
@@ -436,9 +441,6 @@ static void ftdm_r2_on_call_init(openr2_chan_t *r2chan)
|
||||
|
||||
ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_COLLECT);
|
||||
ftdm_mutex_unlock(ftdmchan->mutex);
|
||||
|
||||
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Span is not threaded, not launching thread for this call\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/* only called for incoming calls when the ANI, DNIS etc is complete and the user has to decide either to accept or reject the call */
|
||||
@@ -447,9 +449,7 @@ static void ftdm_r2_on_call_offered(openr2_chan_t *r2chan, const char *ani, cons
|
||||
ftdm_channel_t *ftdmchan = openr2_chan_get_client_data(r2chan);
|
||||
|
||||
ftdm_log_chan(ftdmchan, FTDM_LOG_NOTICE, "Call offered with ANI = %s, DNIS = %s, Priority = (%d)\n", ani, dnis, category);
|
||||
//ftdmchan->caller_data.priority = category;
|
||||
ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_RING);
|
||||
|
||||
}
|
||||
|
||||
static void ftdm_r2_on_call_accepted(openr2_chan_t *r2chan, openr2_call_mode_t mode)
|
||||
@@ -602,8 +602,8 @@ static void ftdm_r2_on_line_idle(openr2_chan_t *r2chan)
|
||||
ftdm_log_chan(ftdmchan, FTDM_LOG_NOTICE, "Far end unblocked in state %s\n", ftdm_channel_state2str(ftdmchan->state));
|
||||
ftdm_clear_flag(ftdmchan, FTDM_CHANNEL_SUSPENDED);
|
||||
|
||||
/* XXX when should we set/unset this flag? XXX */
|
||||
ftdm_set_flag(ftdmchan, FTDM_CHANNEL_SIG_UP);
|
||||
/* XXX when should we set/unset this flag? XXX */
|
||||
ftdm_set_flag(ftdmchan, FTDM_CHANNEL_SIG_UP);
|
||||
}
|
||||
|
||||
static void ftdm_r2_write_log(openr2_log_level_t level, const char *file, const char *function, int line, const char *message)
|
||||
@@ -883,7 +883,7 @@ static FIO_SIG_CONFIGURE_FUNCTION(ftdm_r2_configure_span)
|
||||
ftdm_r2_call_t *r2call = NULL;
|
||||
openr2_chan_t *r2chan = NULL;
|
||||
openr2_log_level_t tmplevel;
|
||||
char *clevel;
|
||||
char *clevel = NULL;
|
||||
char *logval = NULL;
|
||||
|
||||
ft_r2_conf_t r2conf =
|
||||
@@ -891,20 +891,21 @@ static FIO_SIG_CONFIGURE_FUNCTION(ftdm_r2_configure_span)
|
||||
/* .variant */ OR2_VAR_ITU,
|
||||
/* .category */ OR2_CALLING_PARTY_CATEGORY_NATIONAL_SUBSCRIBER,
|
||||
/* .loglevel */ OR2_LOG_ERROR | OR2_LOG_WARNING,
|
||||
/* .logdir */ NULL,
|
||||
/* .advanced_protocol_file */ NULL,
|
||||
/* .max_ani */ 10,
|
||||
/* .max_dnis */ 4,
|
||||
/* .mfback_timeout */ -1,
|
||||
/* .metering_pulse_timeout */ -1,
|
||||
/* .allow_collect_calls */ -1,
|
||||
/* .immediate_accept */ -1,
|
||||
/* .skip_category */ -1,
|
||||
/* .forced_release */ -1,
|
||||
/* .charge_calls */ -1,
|
||||
/* .get_ani_first */ -1,
|
||||
/* .call_files */ 0,
|
||||
/* .mf_files */ 0,
|
||||
/* .logdir */ NULL,
|
||||
/* .advanced_protocol_file */ NULL
|
||||
/* .double_answer */ 0,
|
||||
/* .charge_calls */ -1,
|
||||
/* .forced_release */ -1,
|
||||
/* .allow_collect_calls */ -1
|
||||
};
|
||||
|
||||
assert(sig_cb != NULL);
|
||||
@@ -1107,7 +1108,7 @@ static FIO_SIG_CONFIGURE_FUNCTION(ftdm_r2_configure_span)
|
||||
memset(r2call, 0, sizeof(*r2call));
|
||||
openr2_chan_set_logging_func(r2chan, ftdm_r2_on_chan_log);
|
||||
openr2_chan_set_client_data(r2chan, span->channels[i]);
|
||||
r2call->r2chan = r2chan;
|
||||
r2call->r2chan = r2chan;
|
||||
span->channels[i]->call_data = r2call;
|
||||
/* value and key are the same so just free one of them */
|
||||
snprintf(r2call->name, sizeof(r2call->name), "chancall%d", i);
|
||||
@@ -1322,8 +1323,8 @@ static int ftdm_r2_state_advance(ftdm_channel_t *ftdmchan)
|
||||
static void *ftdm_r2_run(ftdm_thread_t *me, void *obj)
|
||||
{
|
||||
openr2_chan_t *r2chan;
|
||||
ftdm_r2_call_t *r2call = NULL;
|
||||
ftdm_channel_t *ftdmchan = NULL;
|
||||
ftdm_r2_call_t *r2call = NULL;
|
||||
ftdm_channel_t *ftdmchan = NULL;
|
||||
ftdm_status_t status;
|
||||
ftdm_span_t *span = (ftdm_span_t *) obj;
|
||||
ftdm_r2_data_t *r2data = span->signal_data;
|
||||
@@ -1359,16 +1360,14 @@ static void *ftdm_r2_run(ftdm_thread_t *me, void *obj)
|
||||
}
|
||||
|
||||
#ifndef WIN32
|
||||
/* figure out what event to poll each channel for. POLLPRI when the channel is down,
|
||||
* POLLPRI|POLLIN|POLLOUT otherwise.
|
||||
*/
|
||||
memset(poll_events, 0, sizeof(short)*span->chan_count);
|
||||
for (i = 0; i < span->chan_count; i++) {
|
||||
r2chan = R2CALL(span->channels[(i+1)])->r2chan;
|
||||
ftdmchan = openr2_chan_get_client_data(r2chan);
|
||||
|
||||
poll_events[i] = ftdmchan->state == FTDM_CHANNEL_STATE_DOWN ? POLLPRI : (POLLPRI | POLLIN | POLLOUT);
|
||||
}
|
||||
/* figure out what event to poll each channel for. POLLPRI when the channel is down,
|
||||
* POLLPRI|POLLIN|POLLOUT otherwise */
|
||||
memset(poll_events, 0, sizeof(short)*span->chan_count);
|
||||
for (i = 0; i < span->chan_count; i++) {
|
||||
r2chan = R2CALL(span->channels[(i+1)])->r2chan;
|
||||
ftdmchan = openr2_chan_get_client_data(r2chan);
|
||||
poll_events[i] = ftdmchan->state == FTDM_CHANNEL_STATE_DOWN ? POLLPRI : (POLLPRI | POLLIN | POLLOUT);
|
||||
}
|
||||
|
||||
status = ftdm_span_poll_event(span, waitms, poll_events);
|
||||
#else
|
||||
@@ -1385,62 +1384,61 @@ static void *ftdm_r2_run(ftdm_thread_t *me, void *obj)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (FTDM_SUCCESS == status) {
|
||||
if (FTDM_SUCCESS == status) {
|
||||
ftdm_event_t *event;
|
||||
while (ftdm_span_next_event(span, &event) == FTDM_SUCCESS) {
|
||||
if (event->enum_id == FTDM_OOB_CAS_BITS_CHANGE) {
|
||||
r2call = R2CALL(event->channel);
|
||||
r2chan = r2call->r2chan;
|
||||
r2call = R2CALL(event->channel);
|
||||
r2chan = r2call->r2chan;
|
||||
|
||||
ftdm_log(FTDM_LOG_DEBUG, "Handling CAS on channel %d.\n", openr2_chan_get_number(r2chan));
|
||||
// we only expect CAS and other OOB events on this thread/loop, once a call is started
|
||||
// the MF events (in-band signaling) are handled in the call thread
|
||||
openr2_chan_process_cas_signaling(r2chan);
|
||||
|
||||
} else {
|
||||
ftdm_log(FTDM_LOG_DEBUG, "Ignoring event %d on channel %d.\n", event->enum_id, openr2_chan_get_number(r2chan));
|
||||
// XXX TODO: handle alarms here XXX
|
||||
}
|
||||
}
|
||||
|
||||
/* XXX
|
||||
* when ftdm_span_poll_event() returns FTDM_SUCCESS, means there are events pending on the span.
|
||||
* is it possible to know on which channels those events are pending, without trasvering the span?
|
||||
* XXX
|
||||
*/
|
||||
for (i = 1; i <= span->chan_count; i++) {
|
||||
r2chan = R2CALL(span->channels[i])->r2chan;
|
||||
ftdmchan = openr2_chan_get_client_data(r2chan);
|
||||
r2call = R2CALL(ftdmchan);
|
||||
/* XXX
|
||||
* when ftdm_span_poll_event() returns FTDM_SUCCESS, means there are events pending on the span.
|
||||
* is it possible to know on which channels those events are pending, without traversing the span?
|
||||
* XXX */
|
||||
for (i = 1; i <= span->chan_count; i++) {
|
||||
r2chan = R2CALL(span->channels[i])->r2chan;
|
||||
ftdmchan = openr2_chan_get_client_data(r2chan);
|
||||
r2call = R2CALL(ftdmchan);
|
||||
|
||||
ftdm_mutex_lock(ftdmchan->mutex);
|
||||
ftdm_set_flag(r2call, FTDM_R2_PROCESSING);
|
||||
ftdm_mutex_lock(ftdmchan->mutex);
|
||||
ftdm_set_flag(r2call, FTDM_R2_PROCESSING);
|
||||
|
||||
if (ftdm_r2_state_advance(ftdmchan)) {
|
||||
ftdm_clear_flag(r2call, FTDM_R2_PROCESSING);
|
||||
ftdm_mutex_unlock(ftdmchan->mutex);
|
||||
continue;
|
||||
}
|
||||
if (ftdm_r2_state_advance(ftdmchan)) {
|
||||
ftdm_clear_flag(r2call, FTDM_R2_PROCESSING);
|
||||
ftdm_mutex_unlock(ftdmchan->mutex);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* handle timeout events first if any */
|
||||
openr2_chan_run_schedule(r2chan);
|
||||
/* handle timeout events first if any */
|
||||
openr2_chan_run_schedule(r2chan);
|
||||
|
||||
/* process mf tones, if any */
|
||||
if (openr2_chan_get_read_enabled(r2chan))
|
||||
openr2_chan_process_mf_signaling(r2chan);
|
||||
/* process mf tones, if any */
|
||||
if (openr2_chan_get_read_enabled(r2chan)) {
|
||||
openr2_chan_process_mf_signaling(r2chan);
|
||||
}
|
||||
|
||||
if (ftdm_r2_state_advance(ftdmchan)) {
|
||||
ftdm_clear_flag(r2call, FTDM_R2_PROCESSING);
|
||||
ftdm_mutex_unlock(ftdmchan->mutex);
|
||||
continue;
|
||||
}
|
||||
if (ftdm_r2_state_advance(ftdmchan)) {
|
||||
ftdm_clear_flag(r2call, FTDM_R2_PROCESSING);
|
||||
ftdm_mutex_unlock(ftdmchan->mutex);
|
||||
continue;
|
||||
}
|
||||
|
||||
ftdm_clear_flag(r2call, FTDM_R2_PROCESSING);
|
||||
ftdm_mutex_unlock(ftdmchan->mutex);
|
||||
}
|
||||
ftdm_clear_flag(r2call, FTDM_R2_PROCESSING);
|
||||
ftdm_mutex_unlock(ftdmchan->mutex);
|
||||
}
|
||||
} else if (status != FTDM_TIMEOUT) {
|
||||
ftdm_log(FTDM_LOG_ERROR, "ftdm_span_poll_event returned %d.\n", status);
|
||||
}
|
||||
}
|
||||
ftdm_sleep(20);
|
||||
}
|
||||
|
||||
@@ -1613,22 +1611,13 @@ static FIO_API_FUNCTION(ftdm_r2_api)
|
||||
r2data->loops,
|
||||
r2data->monitor_thread_id);
|
||||
stream->write_function(stream, "\n");
|
||||
stream->write_function(stream, "%4s %-12.12s %-12.12s %6s %6s %6s %6s\n", "Channel", "Tx CAS", "Rx CAS",
|
||||
"Rx Avg", "Tx Avg", "Rx", "Tx");
|
||||
stream->write_function(stream, "%4s %-12.12s %-12.12s\n", "Channel", "Tx CAS", "Rx CAS");
|
||||
for (i = 1; i <= span->chan_count; i++) {
|
||||
char rx_str[25];
|
||||
char tx_str[25];
|
||||
char rxavg_str[25];
|
||||
char txavg_str[25];
|
||||
r2chan = R2CALL(span->channels[i])->r2chan;
|
||||
stream->write_function(stream, "%4d %-12.12s %-12.12s %6s %6s %6s %6s\n",
|
||||
stream->write_function(stream, "%4d %-12.12s %-12.12s\n",
|
||||
span->channels[i]->chan_id,
|
||||
openr2_chan_get_tx_cas_string(r2chan),
|
||||
openr2_chan_get_rx_cas_string(r2chan),
|
||||
rxavg_str,
|
||||
txavg_str,
|
||||
rx_str,
|
||||
tx_str);
|
||||
openr2_chan_get_rx_cas_string(r2chan));
|
||||
}
|
||||
stream->write_function(stream, "\n");
|
||||
stream->write_function(stream, "+OK.\n");
|
||||
|
||||
@@ -47,6 +47,7 @@ static ftdm_status_t ftdm_sangoma_isdn_start(ftdm_span_t *span);
|
||||
|
||||
ftdm_channel_t* ftdm_sangoma_isdn_process_event_states(ftdm_span_t *span, sngisdn_event_data_t *sngisdn_event);
|
||||
static void ftdm_sangoma_isdn_advance_chan_states(ftdm_channel_t *ftdmchan);
|
||||
static void ftdm_sangoma_isdn_poll_events(ftdm_span_t *span);
|
||||
|
||||
static void ftdm_sangoma_isdn_process_state_change(ftdm_channel_t *ftdmchan);
|
||||
static void ftdm_sangoma_isdn_process_stack_event (ftdm_span_t *span, sngisdn_event_data_t *sngisdn_event);
|
||||
@@ -56,9 +57,6 @@ static sng_isdn_event_interface_t g_sngisdn_event_interface;
|
||||
|
||||
ftdm_sngisdn_data_t g_sngisdn_data;
|
||||
|
||||
extern ftdm_status_t sng_isdn_activate_trace(ftdm_span_t *span, sngisdn_tracetype_t trace_opt);
|
||||
extern ftdm_status_t sngisdn_check_free_ids(void);
|
||||
|
||||
ftdm_state_map_t sangoma_isdn_state_map = {
|
||||
{
|
||||
{
|
||||
@@ -238,6 +236,50 @@ static __inline__ void ftdm_sangoma_isdn_advance_chan_states(ftdm_channel_t *ftd
|
||||
}
|
||||
}
|
||||
|
||||
static void ftdm_sangoma_isdn_poll_events(ftdm_span_t *span)
|
||||
{
|
||||
ftdm_status_t ret_status;
|
||||
ftdm_channel_t *ftdmchan;
|
||||
ftdm_iterator_t *chaniter = NULL;
|
||||
ftdm_iterator_t *curr = NULL;
|
||||
|
||||
ret_status = ftdm_span_poll_event(span, 0, NULL);
|
||||
switch(ret_status) {
|
||||
case FTDM_SUCCESS:
|
||||
{
|
||||
ftdm_event_t *event;
|
||||
while (ftdm_span_next_event(span, &event) == FTDM_SUCCESS) {
|
||||
|
||||
if (FTDM_SPAN_IS_BRI(span)) {
|
||||
switch (event->enum_id) {
|
||||
/* Check if the span woke up from power-saving mode */
|
||||
case FTDM_OOB_ALARM_CLEAR:
|
||||
{
|
||||
chaniter = ftdm_span_get_chan_iterator(span, NULL);
|
||||
for (curr = chaniter; curr; curr = ftdm_iterator_next(curr)) {
|
||||
ftdmchan = (ftdm_channel_t*)ftdm_iterator_current(curr);
|
||||
sngisdn_chan_data_t *sngisdn_info = ftdmchan->call_data;
|
||||
|
||||
if (ftdm_test_flag(sngisdn_info, FLAG_ACTIVATING)) {
|
||||
ftdm_clear_flag(sngisdn_info, FLAG_ACTIVATING);
|
||||
sngisdn_snd_setup((ftdm_channel_t*)ftdmchan);
|
||||
}
|
||||
}
|
||||
ftdm_iterator_free(chaniter);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case FTDM_TIMEOUT:
|
||||
/* No events pending */
|
||||
break;
|
||||
default:
|
||||
ftdm_log(FTDM_LOG_WARNING, "%s:Failed to poll span event\n", span->name);
|
||||
}
|
||||
}
|
||||
|
||||
static void *ftdm_sangoma_isdn_run(ftdm_thread_t *me, void *obj)
|
||||
{
|
||||
ftdm_interrupt_t *ftdm_sangoma_isdn_int[2];
|
||||
@@ -300,21 +342,8 @@ static void *ftdm_sangoma_isdn_run(ftdm_thread_t *me, void *obj)
|
||||
}
|
||||
|
||||
/* Poll for events, e.g HW DTMF */
|
||||
ret_status = ftdm_span_poll_event(span, 0);
|
||||
switch(ret_status) {
|
||||
case FTDM_SUCCESS:
|
||||
{
|
||||
ftdm_event_t *event;
|
||||
while (ftdm_span_next_event(span, &event) == FTDM_SUCCESS);
|
||||
}
|
||||
break;
|
||||
case FTDM_TIMEOUT:
|
||||
/* No events pending */
|
||||
break;
|
||||
default:
|
||||
ftdm_log(FTDM_LOG_WARNING, "%s:Failed to poll span event\n", span->name);
|
||||
}
|
||||
|
||||
ftdm_sangoma_isdn_poll_events(span);
|
||||
|
||||
if (ftdm_sched_get_time_to_next_timer(signal_data->sched, &sleep) == FTDM_SUCCESS) {
|
||||
if (sleep < 0 || sleep > SNGISDN_EVENT_POLL_RATE) {
|
||||
sleep = SNGISDN_EVENT_POLL_RATE;
|
||||
@@ -498,8 +527,20 @@ static void ftdm_sangoma_isdn_process_state_change(ftdm_channel_t *ftdmchan)
|
||||
}
|
||||
break;
|
||||
case FTDM_CHANNEL_STATE_DIALING: /* outgoing call request */
|
||||
{
|
||||
sngisdn_snd_setup(ftdmchan);
|
||||
{
|
||||
if (FTDM_SPAN_IS_BRI(ftdmchan->span) &&
|
||||
ftdm_test_flag(ftdmchan, FTDM_CHANNEL_IN_ALARM) &&
|
||||
ftdm_test_flag(ftdmchan->span, FTDM_SPAN_PWR_SAVING)) {
|
||||
|
||||
sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*) ftdmchan->span->signal_data;
|
||||
|
||||
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Requesting Line activation\n");
|
||||
sngisdn_set_flag(sngisdn_info, FLAG_ACTIVATING);
|
||||
sng_isdn_wake_up_phy(ftdmchan->span);
|
||||
ftdm_sched_timer(signal_data->sched, "timer_t3", signal_data->timer_t3*1000, sngisdn_t3_timeout, (void*) sngisdn_info, NULL);
|
||||
} else {
|
||||
sngisdn_snd_setup(ftdmchan);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case FTDM_CHANNEL_STATE_PROGRESS:
|
||||
@@ -856,8 +897,7 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_sangoma_isdn_span_config)
|
||||
|
||||
if (span->trunk_type == FTDM_TRUNK_BRI_PTMP ||
|
||||
span->trunk_type == FTDM_TRUNK_BRI) {
|
||||
|
||||
ftdm_set_flag(span, FTDM_SPAN_USE_AV_RATE);
|
||||
|
||||
sng_isdn_set_avail_rate(span, SNGISDN_AVAIL_PWR_SAVING);
|
||||
}
|
||||
|
||||
@@ -913,7 +953,8 @@ static FIO_SIG_LOAD_FUNCTION(ftdm_sangoma_isdn_init)
|
||||
}
|
||||
|
||||
/* initalize sng_isdn library */
|
||||
sng_isdn_init(&g_sngisdn_event_interface);
|
||||
|
||||
ftdm_assert_return(!sng_isdn_init(&g_sngisdn_event_interface), FTDM_FAIL, "Failed to initialize stack\n");
|
||||
return FTDM_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@@ -74,6 +74,7 @@ typedef enum {
|
||||
FLAG_DELAYED_REL = (1 << 7),
|
||||
FLAG_SENT_PROCEED = (1 << 8),
|
||||
FLAG_SEND_DISC = (1 << 9),
|
||||
FLAG_ACTIVATING = (1 << 10), /* Used for BRI only, flag is set after we request line CONNECTED */
|
||||
} sngisdn_flag_t;
|
||||
|
||||
|
||||
@@ -181,6 +182,7 @@ typedef struct sngisdn_span_data {
|
||||
uint8_t facility;
|
||||
int8_t facility_timeout;
|
||||
uint8_t num_local_numbers;
|
||||
uint8_t timer_t3;
|
||||
char* local_numbers[SNGISDN_NUM_LOCAL_NUMBERS];
|
||||
ftdm_sched_t *sched;
|
||||
ftdm_queue_t *event_queue;
|
||||
@@ -266,16 +268,27 @@ extern ftdm_sngisdn_data_t g_sngisdn_data;
|
||||
ftdm_status_t ftmod_isdn_parse_cfg(ftdm_conf_parameter_t *ftdm_parameters, ftdm_span_t *span);
|
||||
|
||||
/* Support functions */
|
||||
FT_DECLARE_INLINE(uint32_t) get_unique_suInstId(uint8_t cc_id);
|
||||
FT_DECLARE_INLINE(void) clear_call_data(sngisdn_chan_data_t *sngisdn_info);
|
||||
FT_DECLARE_INLINE(void) clear_call_glare_data(sngisdn_chan_data_t *sngisdn_info);
|
||||
FT_DECLARE(uint32_t) get_unique_suInstId(int16_t cc_id);
|
||||
FT_DECLARE(void) clear_call_data(sngisdn_chan_data_t *sngisdn_info);
|
||||
FT_DECLARE(void) clear_call_glare_data(sngisdn_chan_data_t *sngisdn_info);
|
||||
|
||||
|
||||
void stack_hdr_init(Header *hdr);
|
||||
void stack_pst_init(Pst *pst);
|
||||
FT_DECLARE_INLINE(ftdm_status_t) get_ftdmchan_by_spInstId(uint8_t cc_id, uint32_t spInstId, sngisdn_chan_data_t **sngisdn_data);
|
||||
FT_DECLARE_INLINE(ftdm_status_t) get_ftdmchan_by_suInstId(uint8_t cc_id, uint32_t suInstId, sngisdn_chan_data_t **sngisdn_data);
|
||||
FT_DECLARE_INLINE(ftdm_status_t) sng_isdn_set_avail_rate(ftdm_span_t *ftdmspan, sngisdn_avail_t avail);
|
||||
|
||||
FT_DECLARE(ftdm_status_t) get_ftdmchan_by_spInstId(int16_t cc_id, uint32_t spInstId, sngisdn_chan_data_t **sngisdn_data);
|
||||
FT_DECLARE(ftdm_status_t) get_ftdmchan_by_suInstId(int16_t cc_id, uint32_t suInstId, sngisdn_chan_data_t **sngisdn_data);
|
||||
FT_DECLARE(ftdm_status_t) sng_isdn_set_avail_rate(ftdm_span_t *ftdmspan, sngisdn_avail_t avail);
|
||||
|
||||
FT_DECLARE(ftdm_status_t) cpy_calling_num_from_stack(ftdm_caller_data_t *ftdm, CgPtyNmb *cgPtyNmb);
|
||||
FT_DECLARE(ftdm_status_t) cpy_called_num_from_stack(ftdm_caller_data_t *ftdm, CdPtyNmb *cdPtyNmb);
|
||||
FT_DECLARE(ftdm_status_t) cpy_redir_num_from_stack(ftdm_caller_data_t *ftdm, RedirNmb *redirNmb);
|
||||
FT_DECLARE(ftdm_status_t) cpy_calling_name_from_stack(ftdm_caller_data_t *ftdm, Display *display);
|
||||
|
||||
FT_DECLARE(ftdm_status_t) cpy_calling_num_from_user(CgPtyNmb *cgPtyNmb, ftdm_caller_data_t *ftdm);
|
||||
FT_DECLARE(ftdm_status_t) cpy_called_num_from_user(CdPtyNmb *cdPtyNmb, ftdm_caller_data_t *ftdm);
|
||||
FT_DECLARE(ftdm_status_t) cpy_redir_num_from_user(RedirNmb *redirNmb, ftdm_caller_data_t *ftdm);
|
||||
FT_DECLARE(ftdm_status_t) cpy_calling_name_from_user(ConEvnt *conEvnt, ftdm_channel_t *ftdmchan);
|
||||
|
||||
/* Outbound Call Control functions */
|
||||
void sngisdn_snd_setup(ftdm_channel_t *ftdmchan);
|
||||
@@ -331,6 +344,14 @@ void sngisdn_process_rst_ind (sngisdn_event_data_t *sngisdn_event);
|
||||
|
||||
void sngisdn_rcv_phy_ind(SuId suId, Reason reason);
|
||||
void sngisdn_rcv_q921_ind(BdMngmt *status);
|
||||
|
||||
void sngisdn_trace_q921(char* str, uint8_t* data, uint32_t data_len);
|
||||
void sngisdn_trace_q931(char* str, uint8_t* data, uint32_t data_len);
|
||||
void get_memory_info(void);
|
||||
|
||||
ftdm_status_t sng_isdn_activate_trace(ftdm_span_t *span, sngisdn_tracetype_t trace_opt);
|
||||
ftdm_status_t sngisdn_check_free_ids(void);
|
||||
|
||||
void sngisdn_rcv_q921_trace(BdMngmt *trc, Buffer *mBuf);
|
||||
void sngisdn_rcv_q931_ind(InMngmt *status);
|
||||
void sngisdn_rcv_q931_trace(InMngmt *trc, Buffer *mBuf);
|
||||
@@ -368,11 +389,13 @@ void sngisdn_delayed_release(void* p_sngisdn_info);
|
||||
void sngisdn_delayed_connect(void* p_sngisdn_info);
|
||||
void sngisdn_delayed_disconnect(void* p_sngisdn_info);
|
||||
void sngisdn_facility_timeout(void* p_sngisdn_info);
|
||||
void sngisdn_t3_timeout(void* p_sngisdn_info);
|
||||
|
||||
/* Stack management functions */
|
||||
ftdm_status_t sng_isdn_stack_cfg(ftdm_span_t *span);
|
||||
ftdm_status_t sng_isdn_stack_start(ftdm_span_t *span);
|
||||
ftdm_status_t sng_isdn_stack_stop(ftdm_span_t *span);
|
||||
ftdm_status_t sng_isdn_wake_up_phy(ftdm_span_t *span);
|
||||
|
||||
void sngisdn_print_phy_stats(ftdm_stream_handle_t *stream, ftdm_span_t *span);
|
||||
void sngisdn_print_spans(ftdm_stream_handle_t *stream);
|
||||
|
||||
@@ -98,6 +98,8 @@ ftdm_status_t parse_switchtype(const char* switch_name, ftdm_span_t *span)
|
||||
ftdm_log(FTDM_LOG_ERROR, "%s:Unsupported switchtype %s for trunktype:%s\n", span->name, switch_name, ftdm_trunk_type2str(span->trunk_type));
|
||||
return FTDM_FAIL;
|
||||
}
|
||||
ftdm_set_flag(span, FTDM_SPAN_USE_AV_RATE);
|
||||
ftdm_set_flag(span, FTDM_SPAN_PWR_SAVING);
|
||||
/* can be > 1 for some BRI variants */
|
||||
break;
|
||||
default:
|
||||
@@ -179,6 +181,7 @@ ftdm_status_t ftmod_isdn_parse_cfg(ftdm_conf_parameter_t *ftdm_parameters, ftdm_
|
||||
signal_data->min_digits = 8;
|
||||
signal_data->overlap_dial = SNGISDN_OPT_DEFAULT;
|
||||
signal_data->setup_arb = SNGISDN_OPT_DEFAULT;
|
||||
signal_data->timer_t3 = 8;
|
||||
|
||||
signal_data->link_id = span->span_id;
|
||||
span->default_caller_data.bearer_capability = IN_ITC_SPEECH;
|
||||
@@ -189,6 +192,7 @@ ftdm_status_t ftmod_isdn_parse_cfg(ftdm_conf_parameter_t *ftdm_parameters, ftdm_
|
||||
if (span->trunk_type == FTDM_TRUNK_BRI ||
|
||||
span->trunk_type == FTDM_TRUNK_BRI_PTMP) {
|
||||
|
||||
|
||||
ftdm_span_set_npi("unknown", &span->default_caller_data.dnis.plan);
|
||||
ftdm_span_set_ton("unknown", &span->default_caller_data.dnis.type);
|
||||
ftdm_span_set_npi("unknown", &span->default_caller_data.cid_num.plan);
|
||||
|
||||
@@ -198,7 +198,7 @@ ftdm_status_t sng_isdn_stack_cfg_phy_psap(ftdm_span_t *span)
|
||||
L1Mngmt cfg;
|
||||
Pst pst;
|
||||
|
||||
S32 d_channel_fd = -1;
|
||||
int32_t d_channel_fd = -1;
|
||||
sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*)span->signal_data;
|
||||
|
||||
/* initalize the post structure */
|
||||
@@ -227,7 +227,7 @@ ftdm_status_t sng_isdn_stack_cfg_phy_psap(ftdm_span_t *span)
|
||||
for (curr = chaniter; curr; curr = ftdm_iterator_next(curr)) {
|
||||
ftdm_channel_t *ftdmchan = (ftdm_channel_t*)ftdm_iterator_current(curr);
|
||||
if (ftdmchan->type == FTDM_CHAN_TYPE_DQ921) {
|
||||
d_channel_fd = (S32) ftdmchan->sockfd;
|
||||
d_channel_fd = (int32_t)ftdmchan->sockfd;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,6 +113,40 @@ ftdm_status_t sng_isdn_stack_stop(ftdm_span_t *span)
|
||||
}
|
||||
|
||||
|
||||
ftdm_status_t sng_isdn_wake_up_phy(ftdm_span_t *span)
|
||||
{
|
||||
L1Mngmt cntrl;
|
||||
Pst pst;
|
||||
|
||||
sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*)span->signal_data;
|
||||
|
||||
/* initalize the post structure */
|
||||
stack_pst_init(&pst);
|
||||
|
||||
/* insert the destination Entity */
|
||||
pst.dstEnt = ENTL1;
|
||||
|
||||
/* initalize the control structure */
|
||||
memset(&cntrl, 0, sizeof(cntrl));
|
||||
|
||||
/* initalize the control header */
|
||||
stack_hdr_init(&cntrl.hdr);
|
||||
|
||||
cntrl.hdr.msgType = TCNTRL; /* configuration */
|
||||
cntrl.hdr.entId.ent = ENTL1; /* entity */
|
||||
cntrl.hdr.entId.inst = S_INST; /* instance */
|
||||
cntrl.hdr.elmId.elmnt = STTSAP; /* SAP Specific cntrl */
|
||||
|
||||
cntrl.t.cntrl.action = AENA;
|
||||
cntrl.t.cntrl.subAction = SAELMNT;
|
||||
cntrl.t.cntrl.sapId = signal_data->link_id;
|
||||
|
||||
if (sng_isdn_phy_cntrl(&pst, &cntrl)) {
|
||||
return FTDM_FAIL;
|
||||
}
|
||||
return FTDM_SUCCESS;
|
||||
}
|
||||
|
||||
ftdm_status_t sng_isdn_activate_phy(ftdm_span_t *span)
|
||||
{
|
||||
|
||||
|
||||
@@ -34,11 +34,6 @@
|
||||
|
||||
#include "ftmod_sangoma_isdn.h"
|
||||
|
||||
extern ftdm_status_t cpy_calling_num_from_stack(ftdm_caller_data_t *ftdm, CgPtyNmb *cgPtyNmb);
|
||||
extern ftdm_status_t cpy_called_num_from_stack(ftdm_caller_data_t *ftdm, CdPtyNmb *cdPtyNmb);
|
||||
extern ftdm_status_t cpy_redir_num_from_stack(ftdm_caller_data_t *ftdm, RedirNmb *redirNmb);
|
||||
extern ftdm_status_t cpy_calling_name_from_stack(ftdm_caller_data_t *ftdm, Display *display);
|
||||
|
||||
/* Remote side transmit a SETUP */
|
||||
void sngisdn_process_con_ind (sngisdn_event_data_t *sngisdn_event)
|
||||
{
|
||||
@@ -78,7 +73,7 @@ void sngisdn_process_con_ind (sngisdn_event_data_t *sngisdn_event)
|
||||
break;
|
||||
}
|
||||
|
||||
sngisdn_info->suInstId = get_unique_suInstId((int8_t) suId);
|
||||
sngisdn_info->suInstId = get_unique_suInstId(suId);
|
||||
sngisdn_info->spInstId = spInstId;
|
||||
|
||||
|
||||
@@ -135,6 +130,7 @@ void sngisdn_process_con_ind (sngisdn_event_data_t *sngisdn_event)
|
||||
cpy_calling_num_from_stack(&ftdmchan->caller_data, &conEvnt->cgPtyNmb);
|
||||
cpy_called_num_from_stack(&ftdmchan->caller_data, &conEvnt->cdPtyNmb);
|
||||
cpy_calling_name_from_stack(&ftdmchan->caller_data, &conEvnt->display);
|
||||
cpy_redir_num_from_stack(&ftdmchan->caller_data, &conEvnt->redirNmb);
|
||||
ftdm_log_chan(sngisdn_info->ftdmchan, FTDM_LOG_INFO, "Incoming call: Called No:[%s] Calling No:[%s]\n", ftdmchan->caller_data.dnis.digits, ftdmchan->caller_data.cid_num.digits);
|
||||
|
||||
if (conEvnt->bearCap[0].eh.pres) {
|
||||
@@ -205,7 +201,7 @@ void sngisdn_process_con_ind (sngisdn_event_data_t *sngisdn_event)
|
||||
sngisdn_set_flag(sngisdn_info, FLAG_DELAYED_REL);
|
||||
|
||||
sngisdn_info->glare.suId = suId;
|
||||
sngisdn_info->glare.suInstId = get_unique_suInstId((int8_t) suId);
|
||||
sngisdn_info->glare.suInstId = get_unique_suInstId(suId);
|
||||
sngisdn_info->glare.spInstId = spInstId;
|
||||
|
||||
sngisdn_info->glare.dChan = dChan;
|
||||
|
||||
@@ -34,10 +34,6 @@
|
||||
|
||||
#include "ftmod_sangoma_isdn.h"
|
||||
|
||||
extern ftdm_status_t cpy_calling_num_from_user(CgPtyNmb *cgPtyNmb, ftdm_caller_data_t *ftdm);
|
||||
extern ftdm_status_t cpy_called_num_from_user(CdPtyNmb *cdPtyNmb, ftdm_caller_data_t *ftdm);
|
||||
extern ftdm_status_t cpy_calling_name_from_user(ConEvnt *conEvnt, ftdm_channel_t *ftdmchan);
|
||||
|
||||
void sngisdn_snd_setup(ftdm_channel_t *ftdmchan);
|
||||
void sngisdn_snd_proceed(ftdm_channel_t *ftdmchan);
|
||||
void sngisdn_snd_progress(ftdm_channel_t *ftdmchan);
|
||||
@@ -45,7 +41,6 @@ void sngisdn_snd_connect(ftdm_channel_t *ftdmchan);
|
||||
void sngisdn_snd_disconnect(ftdm_channel_t *ftdmchan);
|
||||
void sngisdn_snd_release(ftdm_channel_t *ftdmchan, uint8_t glare);
|
||||
|
||||
|
||||
void sngisdn_snd_setup(ftdm_channel_t *ftdmchan)
|
||||
{
|
||||
ConEvnt conEvnt;
|
||||
@@ -147,6 +142,7 @@ void sngisdn_snd_setup(ftdm_channel_t *ftdmchan)
|
||||
|
||||
cpy_called_num_from_user(&conEvnt.cdPtyNmb, &ftdmchan->caller_data);
|
||||
cpy_calling_num_from_user(&conEvnt.cgPtyNmb, &ftdmchan->caller_data);
|
||||
cpy_redir_num_from_user(&conEvnt.redirNmb, &ftdmchan->caller_data);
|
||||
cpy_calling_name_from_user(&conEvnt, ftdmchan);
|
||||
|
||||
ftdm_log_chan(ftdmchan, FTDM_LOG_INFO, "Sending SETUP (suId:%d suInstId:%u spInstId:%u dchan:%d ces:%d)\n", signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId, signal_data->dchan_id, sngisdn_info->ces);
|
||||
|
||||
@@ -34,10 +34,6 @@
|
||||
|
||||
#include "ftmod_sangoma_isdn.h"
|
||||
|
||||
extern void sngisdn_trace_q921(char* str, uint8_t* data, uint32_t data_len);
|
||||
extern void sngisdn_trace_q931(char* str, uint8_t* data, uint32_t data_len);
|
||||
extern void get_memory_info(void);
|
||||
|
||||
#define MAX_DECODE_STR_LEN 2000
|
||||
|
||||
|
||||
@@ -112,7 +108,7 @@ void sngisdn_rcv_con_cfm (int16_t suId, uint32_t suInstId, uint32_t spInstId, Cn
|
||||
ftdm_assert(g_sngisdn_data.ccs[suId].activation_done != 0, "Con Cfm on unconfigured cc\n");
|
||||
ftdm_assert(g_sngisdn_data.dchans[dChan].num_spans != 0, "Con Cfm on unconfigured dchan\n");
|
||||
|
||||
if (get_ftdmchan_by_suInstId((int8_t) suId, suInstId, &sngisdn_info) != FTDM_SUCCESS) {
|
||||
if (get_ftdmchan_by_suInstId(suId, suInstId, &sngisdn_info) != FTDM_SUCCESS) {
|
||||
ftdm_log(FTDM_LOG_CRIT, "Could not find matching call suId:%u suInstId:%u spInstId:%u\n", suId, suInstId, spInstId);
|
||||
ISDN_FUNC_TRACE_EXIT(__FUNCTION__);
|
||||
return;
|
||||
@@ -156,7 +152,7 @@ void sngisdn_rcv_cnst_ind (int16_t suId, uint32_t suInstId, uint32_t spInstId, C
|
||||
ftdm_assert(g_sngisdn_data.ccs[suId].activation_done != 0, "Cnst Ind on unconfigured cc\n");
|
||||
ftdm_assert(g_sngisdn_data.dchans[dChan].num_spans != 0, "Cnst Ind on unconfigured dchan\n");
|
||||
|
||||
if (get_ftdmchan_by_suInstId((int8_t) suId, suInstId, &sngisdn_info) != FTDM_SUCCESS) {
|
||||
if (get_ftdmchan_by_suInstId(suId, suInstId, &sngisdn_info) != FTDM_SUCCESS) {
|
||||
ftdm_log(FTDM_LOG_CRIT, "Could not find matching call suId:%u suInstId:%u spInstId:%u\n", suId, suInstId, spInstId);
|
||||
ISDN_FUNC_TRACE_EXIT(__FUNCTION__);
|
||||
return;
|
||||
@@ -206,8 +202,8 @@ void sngisdn_rcv_disc_ind (int16_t suId, uint32_t suInstId, uint32_t spInstId, D
|
||||
|
||||
ftdm_assert(spInstId != 0, "Received DISCONNECT with invalid id");
|
||||
|
||||
if (!(spInstId && get_ftdmchan_by_spInstId((int8_t) suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) &&
|
||||
!(suInstId && get_ftdmchan_by_suInstId((int8_t) suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) {
|
||||
if (!(spInstId && get_ftdmchan_by_spInstId(suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) &&
|
||||
!(suInstId && get_ftdmchan_by_suInstId(suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) {
|
||||
|
||||
ftdm_log(FTDM_LOG_CRIT, "Could not find matching call suId:%u suInstId:%u spInstId:%u\n", suId, suInstId, spInstId);
|
||||
ftdm_assert(0, "Inconsistent call states\n");
|
||||
@@ -240,8 +236,8 @@ void sngisdn_rcv_rel_ind (int16_t suId, uint32_t suInstId, uint32_t spInstId, Re
|
||||
|
||||
ISDN_FUNC_TRACE_ENTER(__FUNCTION__);
|
||||
|
||||
if (!(spInstId && get_ftdmchan_by_spInstId((int8_t) suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) &&
|
||||
!(suInstId && get_ftdmchan_by_suInstId((int8_t) suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) {
|
||||
if (!(spInstId && get_ftdmchan_by_spInstId(suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) &&
|
||||
!(suInstId && get_ftdmchan_by_suInstId(suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) {
|
||||
|
||||
ftdm_log(FTDM_LOG_CRIT, "Could not find matching call suId:%u suInstId:%u spInstId:%u\n", suId, suInstId, spInstId);
|
||||
/* It seems that Trillium has a bug where they sometimes send release twice on a call, so do not crash on these for now */
|
||||
@@ -274,8 +270,8 @@ void sngisdn_rcv_dat_ind (int16_t suId, uint32_t suInstId, uint32_t spInstId, In
|
||||
|
||||
ISDN_FUNC_TRACE_ENTER(__FUNCTION__);
|
||||
|
||||
if (!(spInstId && get_ftdmchan_by_spInstId((int8_t) suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) &&
|
||||
!(suInstId && get_ftdmchan_by_suInstId((int8_t) suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) {
|
||||
if (!(spInstId && get_ftdmchan_by_spInstId(suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) &&
|
||||
!(suInstId && get_ftdmchan_by_suInstId(suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) {
|
||||
|
||||
ftdm_log(FTDM_LOG_CRIT, "Could not find matching call suId:%u suInstId:%u spInstId:%u\n", suId, suInstId, spInstId);
|
||||
ftdm_assert(0, "Inconsistent call states\n");
|
||||
@@ -307,8 +303,8 @@ void sngisdn_rcv_sshl_ind (int16_t suId, uint32_t suInstId, uint32_t spInstId, S
|
||||
|
||||
ISDN_FUNC_TRACE_ENTER(__FUNCTION__);
|
||||
|
||||
if (!(spInstId && get_ftdmchan_by_spInstId((int8_t) suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) &&
|
||||
!(suInstId && get_ftdmchan_by_suInstId((int8_t) suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) {
|
||||
if (!(spInstId && get_ftdmchan_by_spInstId(suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) &&
|
||||
!(suInstId && get_ftdmchan_by_suInstId(suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) {
|
||||
|
||||
ftdm_log(FTDM_LOG_CRIT, "Could not find matching call suId:%u suInstId:%u spInstId:%u\n", suId, suInstId, spInstId);
|
||||
ftdm_assert(0, "Inconsistent call states\n");
|
||||
@@ -341,8 +337,8 @@ void sngisdn_rcv_sshl_cfm (int16_t suId, uint32_t suInstId, uint32_t spInstId, S
|
||||
|
||||
ISDN_FUNC_TRACE_ENTER(__FUNCTION__);
|
||||
|
||||
if (!(spInstId && get_ftdmchan_by_spInstId((int8_t) suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) &&
|
||||
!(suInstId && get_ftdmchan_by_suInstId((int8_t) suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) {
|
||||
if (!(spInstId && get_ftdmchan_by_spInstId(suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) &&
|
||||
!(suInstId && get_ftdmchan_by_suInstId(suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) {
|
||||
|
||||
ftdm_log(FTDM_LOG_CRIT, "Could not find matching call suId:%u suInstId:%u spInstId:%u\n", suId, suInstId, spInstId);
|
||||
ftdm_assert(0, "Inconsistent call states\n");
|
||||
@@ -374,8 +370,8 @@ void sngisdn_rcv_rmrt_ind (int16_t suId, uint32_t suInstId, uint32_t spInstId, R
|
||||
|
||||
ISDN_FUNC_TRACE_ENTER(__FUNCTION__);
|
||||
|
||||
if (!(spInstId && get_ftdmchan_by_spInstId((int8_t) suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) &&
|
||||
!(suInstId && get_ftdmchan_by_suInstId((int8_t) suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) {
|
||||
if (!(spInstId && get_ftdmchan_by_spInstId(suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) &&
|
||||
!(suInstId && get_ftdmchan_by_suInstId(suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) {
|
||||
|
||||
ftdm_log(FTDM_LOG_CRIT, "Could not find matching call suId:%u suInstId:%u spInstId:%u\n", suId, suInstId, spInstId);
|
||||
ftdm_assert(0, "Inconsistent call states\n");
|
||||
@@ -408,8 +404,8 @@ void sngisdn_rcv_rmrt_cfm (int16_t suId, uint32_t suInstId, uint32_t spInstId, R
|
||||
|
||||
ISDN_FUNC_TRACE_ENTER(__FUNCTION__);
|
||||
|
||||
if (!(spInstId && get_ftdmchan_by_spInstId((int8_t) suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) &&
|
||||
!(suInstId && get_ftdmchan_by_suInstId((int8_t) suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) {
|
||||
if (!(spInstId && get_ftdmchan_by_spInstId(suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) &&
|
||||
!(suInstId && get_ftdmchan_by_suInstId(suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) {
|
||||
|
||||
ftdm_log(FTDM_LOG_CRIT, "Could not find matching call suId:%u suInstId:%u spInstId:%u\n", suId, suInstId, spInstId);
|
||||
ftdm_assert(0, "Inconsistent call states\n");
|
||||
@@ -442,8 +438,8 @@ void sngisdn_rcv_flc_ind (int16_t suId, uint32_t suInstId, uint32_t spInstId, St
|
||||
|
||||
ISDN_FUNC_TRACE_ENTER(__FUNCTION__);
|
||||
|
||||
if (!(spInstId && get_ftdmchan_by_spInstId((int8_t) suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) &&
|
||||
!(suInstId && get_ftdmchan_by_suInstId((int8_t) suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) {
|
||||
if (!(spInstId && get_ftdmchan_by_spInstId(suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) &&
|
||||
!(suInstId && get_ftdmchan_by_suInstId(suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) {
|
||||
|
||||
ftdm_log(FTDM_LOG_CRIT, "Could not find matching call suId:%u suInstId:%u spInstId:%u\n", suId, suInstId, spInstId);
|
||||
ftdm_assert(0, "Inconsistent call states\n");
|
||||
@@ -476,8 +472,8 @@ void sngisdn_rcv_fac_ind (int16_t suId, uint32_t suInstId, uint32_t spInstId, Fa
|
||||
|
||||
ISDN_FUNC_TRACE_ENTER(__FUNCTION__);
|
||||
|
||||
if (!(spInstId && get_ftdmchan_by_spInstId((int8_t) suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) &&
|
||||
!(suInstId && get_ftdmchan_by_suInstId((int8_t) suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) {
|
||||
if (!(spInstId && get_ftdmchan_by_spInstId(suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) &&
|
||||
!(suInstId && get_ftdmchan_by_suInstId(suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) {
|
||||
|
||||
ftdm_log(FTDM_LOG_CRIT, "Could not find matching call suId:%u suInstId:%u spInstId:%u\n", suId, suInstId, spInstId);
|
||||
ftdm_assert(0, "Inconsistent call states\n");
|
||||
@@ -510,8 +506,8 @@ void sngisdn_rcv_sta_cfm (int16_t suId, uint32_t suInstId, uint32_t spInstId, St
|
||||
|
||||
ISDN_FUNC_TRACE_ENTER(__FUNCTION__);
|
||||
|
||||
if (!(spInstId && get_ftdmchan_by_spInstId((int8_t) suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) &&
|
||||
!(suInstId && get_ftdmchan_by_suInstId((int8_t) suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) {
|
||||
if (!(spInstId && get_ftdmchan_by_spInstId(suId, spInstId, &sngisdn_info) == FTDM_SUCCESS) &&
|
||||
!(suInstId && get_ftdmchan_by_suInstId(suId, suInstId, &sngisdn_info) == FTDM_SUCCESS)) {
|
||||
|
||||
ftdm_log(FTDM_LOG_CRIT, "Could not find matching call suId:%u suInstId:%u spInstId:%u\n", suId, suInstId, spInstId);
|
||||
ftdm_assert(0, "Inconsistent call states\n");
|
||||
|
||||
@@ -34,22 +34,12 @@
|
||||
|
||||
#include "ftmod_sangoma_isdn.h"
|
||||
|
||||
ftdm_status_t cpy_calling_num_from_stack(ftdm_caller_data_t *ftdm, CgPtyNmb *cgPtyNmb);
|
||||
ftdm_status_t cpy_called_num_from_stack(ftdm_caller_data_t *ftdm, CdPtyNmb *cdPtyNmb);
|
||||
ftdm_status_t cpy_redir_num_from_stack(ftdm_caller_data_t *ftdm, RedirNmb *redirNmb);
|
||||
ftdm_status_t cpy_calling_name_from_stack(ftdm_caller_data_t *ftdm, Display *display);
|
||||
|
||||
ftdm_status_t cpy_calling_num_from_user(CgPtyNmb *cgPtyNmb, ftdm_caller_data_t *ftdm);
|
||||
ftdm_status_t cpy_called_num_from_user(CdPtyNmb *cdPtyNmb, ftdm_caller_data_t *ftdm);
|
||||
ftdm_status_t cpy_redir_num_from_user(RedirNmb *redirNmb, ftdm_caller_data_t *ftdm);
|
||||
ftdm_status_t cpy_calling_name_from_user(ConEvnt *conEvnt, ftdm_channel_t *ftdmchan);
|
||||
|
||||
ftdm_status_t sngisdn_check_free_ids(void);
|
||||
|
||||
extern ftdm_sngisdn_data_t g_sngisdn_data;
|
||||
void get_memory_info(void);
|
||||
|
||||
FT_DECLARE_INLINE(void) clear_call_data(sngisdn_chan_data_t *sngisdn_info)
|
||||
FT_DECLARE(void) clear_call_data(sngisdn_chan_data_t *sngisdn_info)
|
||||
{
|
||||
uint32_t cc_id = ((sngisdn_span_data_t*)sngisdn_info->ftdmchan->span->signal_data)->cc_id;
|
||||
|
||||
@@ -66,7 +56,7 @@ FT_DECLARE_INLINE(void) clear_call_data(sngisdn_chan_data_t *sngisdn_info)
|
||||
return;
|
||||
}
|
||||
|
||||
FT_DECLARE_INLINE(void) clear_call_glare_data(sngisdn_chan_data_t *sngisdn_info)
|
||||
FT_DECLARE(void) clear_call_glare_data(sngisdn_chan_data_t *sngisdn_info)
|
||||
{
|
||||
ftdm_log_chan(sngisdn_info->ftdmchan, FTDM_LOG_DEBUG, "Clearing glare data (suId:%d suInstId:%u spInstId:%u actv-suInstId:%u actv-spInstId:%u)\n",
|
||||
sngisdn_info->glare.suId,
|
||||
@@ -91,9 +81,10 @@ FT_DECLARE_INLINE(void) clear_call_glare_data(sngisdn_chan_data_t *sngisdn_info)
|
||||
}
|
||||
|
||||
|
||||
FT_DECLARE_INLINE(uint32_t) get_unique_suInstId(uint8_t cc_id)
|
||||
FT_DECLARE(uint32_t) get_unique_suInstId(int16_t cc_id)
|
||||
{
|
||||
uint32_t suInstId;
|
||||
ftdm_assert_return((cc_id > 0 && cc_id <=MAX_VARIANTS), FTDM_FAIL, "Invalid cc_id\n");
|
||||
ftdm_mutex_lock(g_sngisdn_data.ccs[cc_id].mutex);
|
||||
suInstId = g_sngisdn_data.ccs[cc_id].last_suInstId;
|
||||
|
||||
@@ -112,8 +103,9 @@ FT_DECLARE_INLINE(uint32_t) get_unique_suInstId(uint8_t cc_id)
|
||||
return 0;
|
||||
}
|
||||
|
||||
FT_DECLARE_INLINE(ftdm_status_t) get_ftdmchan_by_suInstId(uint8_t cc_id, uint32_t suInstId, sngisdn_chan_data_t **sngisdn_data)
|
||||
FT_DECLARE(ftdm_status_t) get_ftdmchan_by_suInstId(int16_t cc_id, uint32_t suInstId, sngisdn_chan_data_t **sngisdn_data)
|
||||
{
|
||||
ftdm_assert_return((cc_id > 0 && cc_id <=MAX_VARIANTS), FTDM_FAIL, "Invalid cc_id\n");
|
||||
ftdm_assert_return(g_sngisdn_data.ccs[cc_id].activation_done, FTDM_FAIL, "Trying to find call on unconfigured CC\n");
|
||||
|
||||
if (g_sngisdn_data.ccs[cc_id].active_suInstIds[suInstId] == NULL) {
|
||||
@@ -123,8 +115,9 @@ FT_DECLARE_INLINE(ftdm_status_t) get_ftdmchan_by_suInstId(uint8_t cc_id, uint32_
|
||||
return FTDM_SUCCESS;
|
||||
}
|
||||
|
||||
FT_DECLARE_INLINE(ftdm_status_t) get_ftdmchan_by_spInstId(uint8_t cc_id, uint32_t spInstId, sngisdn_chan_data_t **sngisdn_data)
|
||||
FT_DECLARE(ftdm_status_t) get_ftdmchan_by_spInstId(int16_t cc_id, uint32_t spInstId, sngisdn_chan_data_t **sngisdn_data)
|
||||
{
|
||||
ftdm_assert_return((cc_id > 0 && cc_id <=MAX_VARIANTS), FTDM_FAIL, "Invalid cc_id\n");
|
||||
ftdm_assert_return(g_sngisdn_data.ccs[cc_id].activation_done, FTDM_FAIL, "Trying to find call on unconfigured CC\n");
|
||||
|
||||
if (g_sngisdn_data.ccs[cc_id].active_spInstIds[spInstId] == NULL) {
|
||||
@@ -154,7 +147,7 @@ ftdm_status_t sng_isdn_set_avail_rate(ftdm_span_t *span, sngisdn_avail_t avail)
|
||||
return FTDM_SUCCESS;
|
||||
}
|
||||
|
||||
ftdm_status_t cpy_calling_num_from_stack(ftdm_caller_data_t *ftdm, CgPtyNmb *cgPtyNmb)
|
||||
FT_DECLARE(ftdm_status_t) cpy_calling_num_from_stack(ftdm_caller_data_t *ftdm, CgPtyNmb *cgPtyNmb)
|
||||
{
|
||||
if (cgPtyNmb->eh.pres != PRSNT_NODEF) {
|
||||
return FTDM_FAIL;
|
||||
@@ -181,7 +174,7 @@ ftdm_status_t cpy_calling_num_from_stack(ftdm_caller_data_t *ftdm, CgPtyNmb *cgP
|
||||
return FTDM_SUCCESS;
|
||||
}
|
||||
|
||||
ftdm_status_t cpy_called_num_from_stack(ftdm_caller_data_t *ftdm, CdPtyNmb *cdPtyNmb)
|
||||
FT_DECLARE(ftdm_status_t) cpy_called_num_from_stack(ftdm_caller_data_t *ftdm, CdPtyNmb *cdPtyNmb)
|
||||
{
|
||||
if (cdPtyNmb->eh.pres != PRSNT_NODEF) {
|
||||
return FTDM_FAIL;
|
||||
@@ -203,7 +196,7 @@ ftdm_status_t cpy_called_num_from_stack(ftdm_caller_data_t *ftdm, CdPtyNmb *cdPt
|
||||
return FTDM_SUCCESS;
|
||||
}
|
||||
|
||||
ftdm_status_t cpy_redir_num_from_stack(ftdm_caller_data_t *ftdm, RedirNmb *redirNmb)
|
||||
FT_DECLARE(ftdm_status_t) cpy_redir_num_from_stack(ftdm_caller_data_t *ftdm, RedirNmb *redirNmb)
|
||||
{
|
||||
if (redirNmb->eh.pres != PRSNT_NODEF) {
|
||||
return FTDM_FAIL;
|
||||
@@ -223,7 +216,7 @@ ftdm_status_t cpy_redir_num_from_stack(ftdm_caller_data_t *ftdm, RedirNmb *redir
|
||||
return FTDM_SUCCESS;
|
||||
}
|
||||
|
||||
ftdm_status_t cpy_calling_name_from_stack(ftdm_caller_data_t *ftdm, Display *display)
|
||||
FT_DECLARE(ftdm_status_t) cpy_calling_name_from_stack(ftdm_caller_data_t *ftdm, Display *display)
|
||||
{
|
||||
if (display->eh.pres != PRSNT_NODEF) {
|
||||
return FTDM_FAIL;
|
||||
@@ -236,7 +229,7 @@ ftdm_status_t cpy_calling_name_from_stack(ftdm_caller_data_t *ftdm, Display *dis
|
||||
return FTDM_SUCCESS;
|
||||
}
|
||||
|
||||
ftdm_status_t cpy_calling_num_from_user(CgPtyNmb *cgPtyNmb, ftdm_caller_data_t *ftdm)
|
||||
FT_DECLARE(ftdm_status_t) cpy_calling_num_from_user(CgPtyNmb *cgPtyNmb, ftdm_caller_data_t *ftdm)
|
||||
{
|
||||
uint8_t len = strlen(ftdm->cid_num.digits);
|
||||
if (!len) {
|
||||
@@ -264,7 +257,7 @@ ftdm_status_t cpy_calling_num_from_user(CgPtyNmb *cgPtyNmb, ftdm_caller_data_t *
|
||||
return FTDM_SUCCESS;
|
||||
}
|
||||
|
||||
ftdm_status_t cpy_called_num_from_user(CdPtyNmb *cdPtyNmb, ftdm_caller_data_t *ftdm)
|
||||
FT_DECLARE(ftdm_status_t) cpy_called_num_from_user(CdPtyNmb *cdPtyNmb, ftdm_caller_data_t *ftdm)
|
||||
{
|
||||
uint8_t len = strlen(ftdm->dnis.digits);
|
||||
if (!len) {
|
||||
@@ -294,7 +287,7 @@ ftdm_status_t cpy_called_num_from_user(CdPtyNmb *cdPtyNmb, ftdm_caller_data_t *f
|
||||
return FTDM_SUCCESS;
|
||||
}
|
||||
|
||||
ftdm_status_t cpy_redir_num_from_user(RedirNmb *redirNmb, ftdm_caller_data_t *ftdm)
|
||||
FT_DECLARE(ftdm_status_t) cpy_redir_num_from_user(RedirNmb *redirNmb, ftdm_caller_data_t *ftdm)
|
||||
{
|
||||
uint8_t len = strlen(ftdm->rdnis.digits);
|
||||
if (!len) {
|
||||
@@ -326,7 +319,7 @@ ftdm_status_t cpy_redir_num_from_user(RedirNmb *redirNmb, ftdm_caller_data_t *ft
|
||||
}
|
||||
|
||||
|
||||
ftdm_status_t cpy_calling_name_from_user(ConEvnt *conEvnt, ftdm_channel_t *ftdmchan)
|
||||
FT_DECLARE(ftdm_status_t) cpy_calling_name_from_user(ConEvnt *conEvnt, ftdm_channel_t *ftdmchan)
|
||||
{
|
||||
uint8_t len;
|
||||
ftdm_caller_data_t *ftdm = &ftdmchan->caller_data;
|
||||
@@ -379,6 +372,28 @@ ftdm_status_t cpy_calling_name_from_user(ConEvnt *conEvnt, ftdm_channel_t *ftdmc
|
||||
return FTDM_SUCCESS;
|
||||
}
|
||||
|
||||
void sngisdn_t3_timeout(void* p_sngisdn_info)
|
||||
{
|
||||
sngisdn_chan_data_t *sngisdn_info = (sngisdn_chan_data_t*)p_sngisdn_info;
|
||||
ftdm_channel_t *ftdmchan = sngisdn_info->ftdmchan;
|
||||
sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*) ftdmchan->span->signal_data;
|
||||
|
||||
ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Timer T3 expired (suId:%d suInstId:%u spInstId:%u)\n",
|
||||
signal_data->cc_id, sngisdn_info->glare.spInstId, sngisdn_info->glare.suInstId);
|
||||
ftdm_mutex_lock(ftdmchan->mutex);
|
||||
if (ftdm_test_flag(sngisdn_info, FLAG_ACTIVATING)){
|
||||
/* PHY layer timed-out, need to clear the call */
|
||||
ftdm_log_chan(ftdmchan, FTDM_LOG_INFO, "Failed to Wake-Up line (suId:%d suInstId:%u spInstId:%u)\n",
|
||||
signal_data->cc_id, sngisdn_info->glare.spInstId, sngisdn_info->glare.suInstId);
|
||||
|
||||
ftdmchan->caller_data.hangup_cause = FTDM_CAUSE_NO_ROUTE_DESTINATION;
|
||||
ftdm_clear_flag(sngisdn_info, FLAG_ACTIVATING);
|
||||
ftdm_set_flag(sngisdn_info, FLAG_LOCAL_ABORT);
|
||||
ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_TERMINATING);
|
||||
}
|
||||
ftdm_mutex_unlock(ftdmchan->mutex);
|
||||
}
|
||||
|
||||
void sngisdn_delayed_release(void* p_sngisdn_info)
|
||||
{
|
||||
sngisdn_chan_data_t *sngisdn_info = (sngisdn_chan_data_t*)p_sngisdn_info;
|
||||
|
||||
@@ -1347,7 +1347,7 @@ int ftmod_ss7_isup_isap_config(int id)
|
||||
cfg.t.cfg.s.siSap.natAddrInd = ADDR_NOTPRSNT; /* SID Nature of Addres Indicator */
|
||||
cfg.t.cfg.s.siSap.sidNPlan = NP_ISDN; /* SID Numbering Plan */
|
||||
cfg.t.cfg.s.siSap.sidPresInd = FALSE; /* default presentation indicator */
|
||||
cfg.t.cfg.s.siSap.incSidPresRes = TRUE; /* Presentation Restriction of incoming SID */
|
||||
cfg.t.cfg.s.siSap.incSidPresRes = FALSE; /* Presentation Restriction of incoming SID */
|
||||
cfg.t.cfg.s.siSap.sidPresRes = 0; /* Presentation Restriction */
|
||||
}
|
||||
cfg.t.cfg.s.siSap.reqOpt = FALSE; /* Request option */
|
||||
|
||||
@@ -1482,7 +1482,7 @@ static ftdm_status_t handle_tx_grs(ftdm_stream_handle_t *stream, int span, int c
|
||||
|
||||
sngss7_info = (sngss7_chan_data_t *)g_ftdm_sngss7_data.cfg.isupCkt[x].obj;
|
||||
ftdmchan = sngss7_info->ftdmchan;
|
||||
sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span = ftdmchan->span->signal_data;
|
||||
|
||||
if ((ftdmchan->physical_span_id == span) &&
|
||||
((ftdmchan->physical_chan_id >= chan) && (ftdmchan->physical_chan_id < (chan+range)))) {
|
||||
@@ -1529,7 +1529,7 @@ static ftdm_status_t handle_tx_grs(ftdm_stream_handle_t *stream, int span, int c
|
||||
|
||||
sngss7_info = (sngss7_chan_data_t *)g_ftdm_sngss7_data.cfg.isupCkt[x].obj;
|
||||
ftdmchan = sngss7_info->ftdmchan;
|
||||
sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span = ftdmchan->span->signal_data;
|
||||
|
||||
if ((ftdmchan->physical_span_id == span) &&
|
||||
((ftdmchan->physical_chan_id >= chan) && (ftdmchan->physical_chan_id < (chan+range)))) {
|
||||
@@ -1572,7 +1572,7 @@ static ftdm_status_t handle_tx_cgb(ftdm_stream_handle_t *stream, int span, int c
|
||||
/* extract the channel and span info for this circuit */
|
||||
sngss7_info = (sngss7_chan_data_t *)g_ftdm_sngss7_data.cfg.isupCkt[x].obj;
|
||||
ftdmchan = sngss7_info->ftdmchan;
|
||||
sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span = ftdmchan->span->signal_data;
|
||||
|
||||
/* check if this circuit is part of the block */
|
||||
if ((ftdmchan->physical_span_id == span) &&
|
||||
@@ -1628,7 +1628,7 @@ static ftdm_status_t handle_tx_cgb(ftdm_stream_handle_t *stream, int span, int c
|
||||
|
||||
sngss7_info = (sngss7_chan_data_t *)g_ftdm_sngss7_data.cfg.isupCkt[x].obj;
|
||||
ftdmchan = sngss7_info->ftdmchan;
|
||||
sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span = ftdmchan->span->signal_data;
|
||||
|
||||
if ((ftdmchan->physical_span_id == span) &&
|
||||
((ftdmchan->physical_chan_id >= chan) && (ftdmchan->physical_chan_id < (chan+range)))) {
|
||||
@@ -1672,7 +1672,7 @@ static ftdm_status_t handle_tx_cgu(ftdm_stream_handle_t *stream, int span, int c
|
||||
/* extract the channel and span info for this circuit */
|
||||
sngss7_info = (sngss7_chan_data_t *)g_ftdm_sngss7_data.cfg.isupCkt[x].obj;
|
||||
ftdmchan = sngss7_info->ftdmchan;
|
||||
sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span = ftdmchan->span->signal_data;
|
||||
|
||||
/* check if this circuit is part of the block */
|
||||
if ((ftdmchan->physical_span_id == span) &&
|
||||
@@ -1728,7 +1728,7 @@ static ftdm_status_t handle_tx_cgu(ftdm_stream_handle_t *stream, int span, int c
|
||||
|
||||
sngss7_info = (sngss7_chan_data_t *)g_ftdm_sngss7_data.cfg.isupCkt[x].obj;
|
||||
ftdmchan = sngss7_info->ftdmchan;
|
||||
sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span = ftdmchan->span->signal_data;
|
||||
|
||||
if ((ftdmchan->physical_span_id == span) &&
|
||||
((ftdmchan->physical_chan_id >= chan) && (ftdmchan->physical_chan_id < (chan+range)))) {
|
||||
|
||||
@@ -1722,7 +1722,7 @@ ftdm_status_t handle_grs_req(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||
}
|
||||
|
||||
/* fill in the span structure for this circuit */
|
||||
sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span = ftdmchan->span->signal_data;
|
||||
sngss7_span->rx_grs.circuit = circuit;
|
||||
sngss7_span->rx_grs.range = range;
|
||||
|
||||
@@ -1758,7 +1758,7 @@ ftdm_status_t handle_grs_rsp(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||
}
|
||||
|
||||
/* fill in the span structure for this circuit */
|
||||
sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span = ftdmchan->span->signal_data;
|
||||
sngss7_span->rx_gra.circuit = circuit;
|
||||
sngss7_span->rx_gra.range = range;
|
||||
|
||||
@@ -1866,7 +1866,7 @@ ftdm_status_t handle_ucic(uint32_t suInstId, uint32_t spInstId, uint32_t circuit
|
||||
}
|
||||
|
||||
/* check if we just sent a GRS request...*/
|
||||
sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span = ftdmchan->span->signal_data;
|
||||
if (sngss7_span->tx_grs.circuit > 0) {
|
||||
/* we need to put all circuits on this UCIC */
|
||||
sngss7_span->ucic.circuit = sngss7_span->tx_grs.circuit;
|
||||
@@ -1917,7 +1917,7 @@ ftdm_status_t handle_cgb_req(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||
}
|
||||
|
||||
/* grab the span info */
|
||||
sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span = ftdmchan->span->signal_data;
|
||||
|
||||
/* figure out what type of block needs to be applied */
|
||||
if ((siStaEvnt->cgsmti.eh.pres == PRSNT_NODEF) && (siStaEvnt->cgsmti.typeInd.pres == PRSNT_NODEF)) {
|
||||
@@ -2058,7 +2058,7 @@ ftdm_status_t handle_cgu_req(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||
}
|
||||
|
||||
/* grab the span info */
|
||||
sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span = ftdmchan->span->signal_data;
|
||||
|
||||
/* figure out what type of block needs to be applied */
|
||||
if ((siStaEvnt->cgsmti.eh.pres == PRSNT_NODEF) && (siStaEvnt->cgsmti.typeInd.pres == PRSNT_NODEF)) {
|
||||
|
||||
@@ -90,7 +90,7 @@ void sngss7_con_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circuit, SiCo
|
||||
memcpy(&sngss7_event->event.siConEvnt, siConEvnt, sizeof(*siConEvnt));
|
||||
|
||||
/* enqueue this event */
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->mod_data)->event_queue, sngss7_event);
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->signal_data)->event_queue, sngss7_event);
|
||||
|
||||
SS7_FUNC_TRACE_EXIT(__FUNCTION__);
|
||||
}
|
||||
@@ -128,7 +128,7 @@ void sngss7_con_cfm(uint32_t suInstId, uint32_t spInstId, uint32_t circuit, SiCo
|
||||
memcpy(&sngss7_event->event.siConEvnt, siConEvnt, sizeof(*siConEvnt));
|
||||
|
||||
/* enqueue this event */
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->mod_data)->event_queue, sngss7_event);
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->signal_data)->event_queue, sngss7_event);
|
||||
|
||||
SS7_FUNC_TRACE_EXIT(__FUNCTION__);
|
||||
}
|
||||
@@ -167,7 +167,7 @@ void sngss7_con_sta(uint32_t suInstId, uint32_t spInstId, uint32_t circuit, SiCn
|
||||
memcpy(&sngss7_event->event.siCnStEvnt, siCnStEvnt, sizeof(*siCnStEvnt));
|
||||
|
||||
/* enqueue this event */
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->mod_data)->event_queue, sngss7_event);
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->signal_data)->event_queue, sngss7_event);
|
||||
|
||||
SS7_FUNC_TRACE_EXIT(__FUNCTION__);
|
||||
}
|
||||
@@ -205,7 +205,7 @@ void sngss7_rel_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circuit, SiRe
|
||||
memcpy(&sngss7_event->event.siRelEvnt, siRelEvnt, sizeof(*siRelEvnt));
|
||||
|
||||
/* enqueue this event */
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->mod_data)->event_queue, sngss7_event);
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->signal_data)->event_queue, sngss7_event);
|
||||
|
||||
SS7_FUNC_TRACE_EXIT(__FUNCTION__);
|
||||
}
|
||||
@@ -243,7 +243,7 @@ void sngss7_rel_cfm(uint32_t suInstId, uint32_t spInstId, uint32_t circuit, SiRe
|
||||
memcpy(&sngss7_event->event.siRelEvnt, siRelEvnt, sizeof(*siRelEvnt));
|
||||
|
||||
/* enqueue this event */
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->mod_data)->event_queue, sngss7_event);
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->signal_data)->event_queue, sngss7_event);
|
||||
|
||||
SS7_FUNC_TRACE_EXIT(__FUNCTION__);
|
||||
}
|
||||
@@ -281,7 +281,7 @@ void sngss7_dat_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circuit, SiIn
|
||||
memcpy(&sngss7_event->event.siInfoEvnt, siInfoEvnt, sizeof(*siInfoEvnt));
|
||||
|
||||
/* enqueue this event */
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->mod_data)->event_queue, sngss7_event);
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->signal_data)->event_queue, sngss7_event);
|
||||
|
||||
SS7_FUNC_TRACE_EXIT(__FUNCTION__);
|
||||
}
|
||||
@@ -320,7 +320,7 @@ void sngss7_fac_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circuit, uint
|
||||
memcpy(&sngss7_event->event.siFacEvnt, siFacEvnt, sizeof(*siFacEvnt));
|
||||
|
||||
/* enqueue this event */
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->mod_data)->event_queue, sngss7_event);
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->signal_data)->event_queue, sngss7_event);
|
||||
|
||||
SS7_FUNC_TRACE_EXIT(__FUNCTION__);
|
||||
}
|
||||
@@ -359,7 +359,7 @@ void sngss7_fac_cfm(uint32_t suInstId, uint32_t spInstId, uint32_t circuit, uint
|
||||
memcpy(&sngss7_event->event.siFacEvnt, siFacEvnt, sizeof(*siFacEvnt));
|
||||
|
||||
/* enqueue this event */
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->mod_data)->event_queue, sngss7_event);
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->signal_data)->event_queue, sngss7_event);
|
||||
|
||||
SS7_FUNC_TRACE_EXIT(__FUNCTION__);
|
||||
}
|
||||
@@ -396,7 +396,7 @@ void sngss7_umsg_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circuit)
|
||||
sngss7_event->event_id = SNGSS7_UMSG_IND_EVENT;
|
||||
|
||||
/* enqueue this event */
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->mod_data)->event_queue, sngss7_event);
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->signal_data)->event_queue, sngss7_event);
|
||||
|
||||
SS7_FUNC_TRACE_EXIT(__FUNCTION__);
|
||||
|
||||
@@ -438,7 +438,7 @@ void sngss7_sta_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circuit, uint
|
||||
}
|
||||
|
||||
/* enqueue this event */
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->mod_data)->event_queue, sngss7_event);
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->signal_data)->event_queue, sngss7_event);
|
||||
|
||||
SS7_FUNC_TRACE_EXIT(__FUNCTION__);
|
||||
}
|
||||
@@ -478,7 +478,7 @@ void sngss7_susp_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circuit, SiS
|
||||
}
|
||||
|
||||
/* enqueue this event */
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->mod_data)->event_queue, sngss7_event);
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->signal_data)->event_queue, sngss7_event);
|
||||
|
||||
SS7_FUNC_TRACE_EXIT(__FUNCTION__);
|
||||
|
||||
@@ -519,7 +519,7 @@ void sngss7_resm_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circuit, SiR
|
||||
}
|
||||
|
||||
/* enqueue this event */
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->mod_data)->event_queue, sngss7_event);
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->signal_data)->event_queue, sngss7_event);
|
||||
|
||||
SS7_FUNC_TRACE_EXIT(__FUNCTION__);
|
||||
|
||||
@@ -560,7 +560,7 @@ void sngss7_ssp_sta_cfm(uint32_t infId)
|
||||
}
|
||||
|
||||
/* enqueue this event */
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->mod_data)->event_queue, sngss7_event);
|
||||
ftdm_queue_enqueue(((sngss7_span_data_t*)sngss7_info->ftdmchan->span->signal_data)->event_queue, sngss7_event);
|
||||
#endif
|
||||
SS7_FUNC_TRACE_EXIT(__FUNCTION__);
|
||||
|
||||
|
||||
@@ -275,7 +275,7 @@ static void *ftdm_sangoma_ss7_run(ftdm_thread_t * me, void *obj)
|
||||
ftdm_span_t *ftdmspan = (ftdm_span_t *) obj;
|
||||
ftdm_channel_t *ftdmchan = NULL;
|
||||
sngss7_event_data_t *sngss7_event = NULL;
|
||||
sngss7_span_data_t *sngss7_span = (sngss7_span_data_t *)ftdmspan->mod_data;
|
||||
sngss7_span_data_t *sngss7_span = (sngss7_span_data_t *)ftdmspan->signal_data;
|
||||
|
||||
ftdm_log (FTDM_LOG_INFO, "ftmod_sangoma_ss7 monitor thread for span=%u started.\n", ftdmspan->span_id);
|
||||
|
||||
@@ -788,7 +788,7 @@ void ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
|
||||
/* check if this is the base circuit and send out the GRA
|
||||
* we insure that this is the last circuit to have the state change queued
|
||||
*/
|
||||
sngss7_span_data_t *span = ftdmchan->span->mod_data;
|
||||
sngss7_span_data_t *span = ftdmchan->span->signal_data;
|
||||
if (span->rx_grs.circuit == sngss7_info->circuit->id) {
|
||||
/* send out the GRA */
|
||||
ft_to_sngss7_gra(ftdmchan);
|
||||
@@ -1350,7 +1350,7 @@ static ftdm_status_t ftdm_sangoma_ss7_start(ftdm_span_t * span)
|
||||
ftdmchan = span->channels[x];
|
||||
if (ftdmchan->call_data == NULL) continue;
|
||||
sngss7_info = ftdmchan->call_data;
|
||||
sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span = ftdmchan->span->signal_data;
|
||||
sngss7_intf = &g_ftdm_sngss7_data.cfg.isupIntf[sngss7_info->circuit->infId];
|
||||
|
||||
|
||||
@@ -1474,7 +1474,7 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_sangoma_ss7_span_config)
|
||||
span->get_channel_sig_status = ftdm_sangoma_ss7_get_sig_status;
|
||||
span->set_channel_sig_status = ftdm_sangoma_ss7_set_sig_status;
|
||||
span->state_map = &sangoma_ss7_state_map;
|
||||
span->mod_data = ss7_span_info;
|
||||
span->signal_data = ss7_span_info;
|
||||
|
||||
/* set the flag to indicate that this span uses channel state change queues */
|
||||
ftdm_set_flag (span, FTDM_SPAN_USE_CHAN_QUEUE);
|
||||
|
||||
@@ -619,7 +619,7 @@ void ft_to_sngss7_gra (ftdm_channel_t * ftdmchan)
|
||||
{
|
||||
SS7_FUNC_TRACE_ENTER (__FUNCTION__);
|
||||
|
||||
sngss7_span_data_t *sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span_data_t *sngss7_span = ftdmchan->span->signal_data;
|
||||
sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
|
||||
SiStaEvnt gra;
|
||||
|
||||
@@ -663,7 +663,7 @@ void ft_to_sngss7_grs (ftdm_channel_t * ftdmchan)
|
||||
{
|
||||
SS7_FUNC_TRACE_ENTER (__FUNCTION__);
|
||||
|
||||
sngss7_span_data_t *sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span_data_t *sngss7_span = ftdmchan->span->signal_data;
|
||||
sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
|
||||
|
||||
SiStaEvnt grs;
|
||||
@@ -696,7 +696,7 @@ void ft_to_sngss7_cgba(ftdm_channel_t * ftdmchan)
|
||||
{
|
||||
SS7_FUNC_TRACE_ENTER (__FUNCTION__);
|
||||
|
||||
sngss7_span_data_t *sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span_data_t *sngss7_span = ftdmchan->span->signal_data;
|
||||
sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
|
||||
int x = 0;
|
||||
|
||||
@@ -745,7 +745,7 @@ void ft_to_sngss7_cgua(ftdm_channel_t * ftdmchan)
|
||||
{
|
||||
SS7_FUNC_TRACE_ENTER (__FUNCTION__);
|
||||
|
||||
sngss7_span_data_t *sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span_data_t *sngss7_span = ftdmchan->span->signal_data;
|
||||
sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
|
||||
int x = 0;
|
||||
|
||||
@@ -794,7 +794,7 @@ void ft_to_sngss7_cgb(ftdm_channel_t * ftdmchan)
|
||||
{
|
||||
SS7_FUNC_TRACE_ENTER (__FUNCTION__);
|
||||
|
||||
sngss7_span_data_t *sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span_data_t *sngss7_span = ftdmchan->span->signal_data;
|
||||
sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
|
||||
SiStaEvnt cgb;
|
||||
int x = 0;
|
||||
@@ -844,7 +844,7 @@ void ft_to_sngss7_cgu(ftdm_channel_t * ftdmchan)
|
||||
{
|
||||
SS7_FUNC_TRACE_ENTER (__FUNCTION__);
|
||||
|
||||
sngss7_span_data_t *sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span_data_t *sngss7_span = ftdmchan->span->signal_data;
|
||||
sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
|
||||
SiStaEvnt cgu;
|
||||
int x = 0;
|
||||
|
||||
@@ -513,7 +513,7 @@ ftdm_status_t check_if_rx_grs_started(ftdm_span_t *ftdmspan)
|
||||
{
|
||||
ftdm_channel_t *ftdmchan = NULL;
|
||||
sngss7_chan_data_t *sngss7_info = NULL;
|
||||
sngss7_span_data_t *sngss7_span = (sngss7_span_data_t *)ftdmspan->mod_data;
|
||||
sngss7_span_data_t *sngss7_span = (sngss7_span_data_t *)ftdmspan->signal_data;
|
||||
int i;
|
||||
|
||||
for ( i = sngss7_span->rx_grs.circuit; i < (sngss7_span->rx_grs.circuit + sngss7_span->rx_grs.range + 1); i++) {
|
||||
@@ -575,7 +575,7 @@ ftdm_status_t check_if_rx_grs_processed(ftdm_span_t *ftdmspan)
|
||||
{
|
||||
ftdm_channel_t *ftdmchan = NULL;
|
||||
sngss7_chan_data_t *sngss7_info = NULL;
|
||||
sngss7_span_data_t *sngss7_span = (sngss7_span_data_t *)ftdmspan->mod_data;
|
||||
sngss7_span_data_t *sngss7_span = (sngss7_span_data_t *)ftdmspan->signal_data;
|
||||
int i;
|
||||
int byte = 0;
|
||||
int bit = 0;
|
||||
@@ -667,7 +667,7 @@ ftdm_status_t check_if_rx_gra_started(ftdm_span_t *ftdmspan)
|
||||
{
|
||||
ftdm_channel_t *ftdmchan = NULL;
|
||||
sngss7_chan_data_t *sngss7_info = NULL;
|
||||
sngss7_span_data_t *sngss7_span = (sngss7_span_data_t *)ftdmspan->mod_data;
|
||||
sngss7_span_data_t *sngss7_span = (sngss7_span_data_t *)ftdmspan->signal_data;
|
||||
int i;
|
||||
|
||||
for (i = sngss7_span->rx_gra.circuit; i < (sngss7_span->rx_gra.circuit + sngss7_span->rx_gra.range + 1); i++) {
|
||||
@@ -817,7 +817,7 @@ ftdm_status_t process_span_ucic(ftdm_span_t *ftdmspan)
|
||||
{
|
||||
ftdm_channel_t *ftdmchan = NULL;
|
||||
sngss7_chan_data_t *sngss7_info = NULL;
|
||||
sngss7_span_data_t *sngss7_span = (sngss7_span_data_t *)ftdmspan->mod_data;
|
||||
sngss7_span_data_t *sngss7_span = (sngss7_span_data_t *)ftdmspan->signal_data;
|
||||
int i;
|
||||
|
||||
for (i = sngss7_span->ucic.circuit; i < (sngss7_span->ucic.circuit + sngss7_span->ucic.range + 1); i++) {
|
||||
@@ -869,7 +869,7 @@ ftdm_status_t clear_rx_grs_flags(sngss7_chan_data_t *sngss7_info)
|
||||
ftdm_status_t clear_rx_grs_data(sngss7_chan_data_t *sngss7_info)
|
||||
{
|
||||
ftdm_channel_t *ftdmchan = sngss7_info->ftdmchan;
|
||||
sngss7_span_data_t *sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span_data_t *sngss7_span = ftdmchan->span->signal_data;
|
||||
|
||||
/* clear the rx_grs data fields */
|
||||
memset(&sngss7_span->rx_grs, 0x0, sizeof(sngss7_group_data_t));
|
||||
@@ -881,7 +881,7 @@ ftdm_status_t clear_rx_grs_data(sngss7_chan_data_t *sngss7_info)
|
||||
ftdm_status_t clear_rx_gra_data(sngss7_chan_data_t *sngss7_info)
|
||||
{
|
||||
ftdm_channel_t *ftdmchan = sngss7_info->ftdmchan;
|
||||
sngss7_span_data_t *sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span_data_t *sngss7_span = ftdmchan->span->signal_data;
|
||||
|
||||
/* clear the rx_grs data fields */
|
||||
memset(&sngss7_span->rx_gra, 0x0, sizeof(sngss7_group_data_t));
|
||||
@@ -904,7 +904,7 @@ ftdm_status_t clear_tx_grs_flags(sngss7_chan_data_t *sngss7_info)
|
||||
ftdm_status_t clear_tx_grs_data(sngss7_chan_data_t *sngss7_info)
|
||||
{
|
||||
ftdm_channel_t *ftdmchan = sngss7_info->ftdmchan;
|
||||
sngss7_span_data_t *sngss7_span = ftdmchan->span->mod_data;
|
||||
sngss7_span_data_t *sngss7_span = ftdmchan->span->signal_data;
|
||||
|
||||
/* clear the rx_grs data fields */
|
||||
memset(&sngss7_span->tx_grs, 0x0, sizeof(sngss7_group_data_t));
|
||||
|
||||
@@ -2121,7 +2121,7 @@ static int ftmod_ss7_fill_in_circuits(sng_isupCkt_t *isupCkt)
|
||||
ftdmchan->call_data = ss7_info;
|
||||
|
||||
/* prepare the timer structures */
|
||||
ss7_info->t35.sched = ((sngss7_span_data_t *)isupCkt->span->mod_data)->sched;
|
||||
ss7_info->t35.sched = ((sngss7_span_data_t *)isupCkt->span->signal_data)->sched;
|
||||
ss7_info->t35.counter = 1;
|
||||
ss7_info->t35.beat = g_ftdm_sngss7_data.cfg.isupIntf[isupCkt->isupInf].t35*100; /* beat is in ms, t35 is in 100ms */
|
||||
ss7_info->t35.callback = handle_isup_t35;
|
||||
|
||||
@@ -117,28 +117,28 @@ static __inline__ int tdmv_api_wait_socket(ftdm_channel_t *ftdmchan, int timeout
|
||||
|
||||
#ifdef LIBSANGOMA_VERSION
|
||||
int err;
|
||||
uint32_t inflags = *flags;
|
||||
uint32_t outflags = 0;
|
||||
sangoma_wait_obj_t *sangoma_wait_obj = ftdmchan->mod_data;
|
||||
uint32_t inflags = *flags;
|
||||
uint32_t outflags = 0;
|
||||
sangoma_wait_obj_t *sangoma_wait_obj = ftdmchan->io_data;
|
||||
|
||||
err = sangoma_waitfor(sangoma_wait_obj, inflags, &outflags, timeout);
|
||||
*flags = 0;
|
||||
if (err == SANG_STATUS_SUCCESS) {
|
||||
*flags = outflags;
|
||||
err = 1; /* ideally should be the number of file descriptors with something to read */
|
||||
}
|
||||
if (err == SANG_STATUS_APIPOLL_TIMEOUT) {
|
||||
err = 0;
|
||||
}
|
||||
return err;
|
||||
if (err == SANG_STATUS_SUCCESS) {
|
||||
*flags = outflags;
|
||||
err = 1; /* ideally should be the number of file descriptors with something to read */
|
||||
}
|
||||
if (err == SANG_STATUS_APIPOLL_TIMEOUT) {
|
||||
err = 0;
|
||||
}
|
||||
return err;
|
||||
#else
|
||||
struct pollfd pfds[1];
|
||||
int res;
|
||||
int res;
|
||||
|
||||
memset(&pfds[0], 0, sizeof(pfds[0]));
|
||||
pfds[0].fd = ftdmchan->sockfd;
|
||||
pfds[0].events = *flags;
|
||||
res = poll(pfds, 1, timeout);
|
||||
memset(&pfds[0], 0, sizeof(pfds[0]));
|
||||
pfds[0].fd = ftdmchan->sockfd;
|
||||
pfds[0].events = *flags;
|
||||
res = poll(pfds, 1, timeout);
|
||||
*flags = 0;
|
||||
|
||||
if (pfds[0].revents & POLLERR) {
|
||||
@@ -149,7 +149,7 @@ static __inline__ int tdmv_api_wait_socket(ftdm_channel_t *ftdmchan, int timeout
|
||||
*flags = pfds[0].revents;
|
||||
}
|
||||
|
||||
return res;
|
||||
return res;
|
||||
#endif
|
||||
|
||||
}
|
||||
@@ -252,7 +252,7 @@ static unsigned wp_open_range(ftdm_span_t *span, unsigned spanno, unsigned start
|
||||
ftdm_log(FTDM_LOG_ERROR, "failure create waitable object for s%dc%d\n", spanno, x);
|
||||
continue;
|
||||
}
|
||||
chan->mod_data = sangoma_wait_obj;
|
||||
chan->io_data = sangoma_wait_obj;
|
||||
#endif
|
||||
|
||||
chan->physical_span_id = spanno;
|
||||
@@ -541,7 +541,7 @@ static FIO_OPEN_FUNCTION(wanpipe_open)
|
||||
static FIO_CLOSE_FUNCTION(wanpipe_close)
|
||||
{
|
||||
#ifdef LIBSANGOMA_VERSION
|
||||
sangoma_wait_obj_t *waitobj = ftdmchan->mod_data;
|
||||
sangoma_wait_obj_t *waitobj = ftdmchan->io_data;
|
||||
/* kick any I/O waiters */
|
||||
sangoma_wait_obj_signal(waitobj);
|
||||
#endif
|
||||
@@ -895,10 +895,10 @@ FIO_SPAN_POLL_EVENT_FUNCTION(wanpipe_poll_event)
|
||||
for(i = 1; i <= span->chan_count; i++) {
|
||||
ftdm_channel_t *ftdmchan = span->channels[i];
|
||||
#ifdef LIBSANGOMA_VERSION
|
||||
if (!ftdmchan->mod_data) {
|
||||
if (!ftdmchan->io_data) {
|
||||
continue; /* should never happen but happens when shutting down */
|
||||
}
|
||||
pfds[j] = ftdmchan->mod_data;
|
||||
pfds[j] = ftdmchan->io_data;
|
||||
inflags[j] = poll_events ? poll_events[j] : POLLPRI;
|
||||
#else
|
||||
memset(&pfds[j], 0, sizeof(pfds[j]));
|
||||
@@ -1011,12 +1011,25 @@ static FIO_GET_ALARMS_FUNCTION(wanpipe_get_alarms)
|
||||
}
|
||||
alarms = tdm_api.wp_tdm_cmd.fe_alarms;
|
||||
#endif
|
||||
#ifdef WIN32
|
||||
/* Temporary fix: in the current trunk of libsangoma, for BRI,
|
||||
WAN_TE_BIT_ALARM_RED bit is set if the card is in disconnected state, but this has
|
||||
not been ported to Windows-libsangoma yet */
|
||||
if (FTDM_SPAN_IS_BRI(ftdmchan->span)) {
|
||||
if (alarms) {
|
||||
ftdmchan->alarm_flags |= FTDM_ALARM_RED;
|
||||
alarms = 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
ftdmchan->alarm_flags = FTDM_ALARM_NONE;
|
||||
|
||||
if (alarms & WAN_TE_BIT_ALARM_RED) {
|
||||
ftdmchan->alarm_flags |= FTDM_ALARM_RED;
|
||||
alarms &= ~WAN_TE_BIT_ALARM_RED;
|
||||
}
|
||||
|
||||
|
||||
if (alarms & WAN_TE_BIT_ALARM_AIS) {
|
||||
ftdmchan->alarm_flags |= FTDM_ALARM_BLUE;
|
||||
@@ -1166,6 +1179,11 @@ FIO_SPAN_NEXT_EVENT_FUNCTION(wanpipe_next_event)
|
||||
char tmp_dtmf[2] = { tdm_api.wp_tdm_cmd.event.wp_tdm_api_event_dtmf_digit, 0 };
|
||||
event_id = FTDM_OOB_NOOP;
|
||||
|
||||
if (tmp_dtmf[0] == 'f') {
|
||||
ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Ignoring wanpipe DTMF: %c, fax tones will be passed through!\n", tmp_dtmf[0]);
|
||||
break;
|
||||
}
|
||||
|
||||
if (tdm_api.wp_tdm_cmd.event.wp_tdm_api_event_dtmf_type == WAN_EC_TONE_PRESENT) {
|
||||
ftdm_set_flag_locked(ftdmchan, FTDM_CHANNEL_MUTE);
|
||||
}
|
||||
@@ -1216,10 +1234,10 @@ FIO_SPAN_NEXT_EVENT_FUNCTION(wanpipe_next_event)
|
||||
static FIO_CHANNEL_DESTROY_FUNCTION(wanpipe_channel_destroy)
|
||||
{
|
||||
#ifdef LIBSANGOMA_VERSION
|
||||
if (ftdmchan->mod_data) {
|
||||
if (ftdmchan->io_data) {
|
||||
sangoma_wait_obj_t *sangoma_wait_obj;
|
||||
sangoma_wait_obj = ftdmchan->mod_data;
|
||||
ftdmchan->mod_data = NULL;
|
||||
sangoma_wait_obj = ftdmchan->io_data;
|
||||
ftdmchan->io_data = NULL;
|
||||
sangoma_wait_obj_delete(&sangoma_wait_obj);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -658,6 +658,14 @@ static FIO_OPEN_FUNCTION(zt_open)
|
||||
*/
|
||||
static FIO_CLOSE_FUNCTION(zt_close)
|
||||
{
|
||||
if (ftdmchan->type == FTDM_CHAN_TYPE_B) {
|
||||
int value = 0; /* disable audio mode */
|
||||
if (ioctl(ftdmchan->sockfd, codes.AUDIOMODE, &value)) {
|
||||
snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "%s", strerror(errno));
|
||||
ftdm_log(FTDM_LOG_ERROR, "%s\n", ftdmchan->last_error);
|
||||
return FTDM_FAIL;
|
||||
}
|
||||
}
|
||||
return FTDM_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -867,7 +875,7 @@ static FIO_WAIT_FUNCTION(zt_wait)
|
||||
{
|
||||
int32_t inflags = 0;
|
||||
int result;
|
||||
struct pollfd pfds[1];
|
||||
struct pollfd pfds[1];
|
||||
|
||||
if (*flags & FTDM_READ) {
|
||||
inflags |= POLLIN;
|
||||
@@ -882,13 +890,14 @@ static FIO_WAIT_FUNCTION(zt_wait)
|
||||
}
|
||||
|
||||
|
||||
memset(&pfds[0], 0, sizeof(pfds[0]));
|
||||
pfds[0].fd = ftdmchan->sockfd;
|
||||
pfds[0].events = inflags;
|
||||
result = poll(pfds, 1, to);
|
||||
memset(&pfds[0], 0, sizeof(pfds[0]));
|
||||
pfds[0].fd = ftdmchan->sockfd;
|
||||
pfds[0].events = inflags;
|
||||
result = poll(pfds, 1, to);
|
||||
*flags = 0;
|
||||
|
||||
if (pfds[0].revents & POLLERR) {
|
||||
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_ERROR, "DAHDI device got POLLERR\n");
|
||||
result = -1;
|
||||
}
|
||||
|
||||
@@ -900,6 +909,7 @@ static FIO_WAIT_FUNCTION(zt_wait)
|
||||
|
||||
if (result < 0){
|
||||
snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "Poll failed");
|
||||
ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "Failed to poll DAHDI device: %s\n", strerror(errno));
|
||||
return FTDM_FAIL;
|
||||
}
|
||||
|
||||
|
||||
@@ -1240,6 +1240,9 @@ FT_DECLARE(void) ftdm_span_set_trunk_type(ftdm_span_t *span, ftdm_trunk_type_t t
|
||||
*/
|
||||
FT_DECLARE(ftdm_trunk_type_t) ftdm_span_get_trunk_type(const ftdm_span_t *span);
|
||||
|
||||
/*! \brief For display debugging purposes you can display this string which describes the trunk type of a span */
|
||||
FT_DECLARE(const char *) ftdm_span_get_trunk_type_str(const ftdm_span_t *span);
|
||||
|
||||
/*!
|
||||
* \brief Return the channel identified by the provided id
|
||||
*
|
||||
@@ -1259,6 +1262,12 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_set_caller_data(ftdm_channel_t *ftdmchan,
|
||||
/*! \brief Get the caller data for a channel, typically you need this when receiving FTDM_SIGEVENT_START */
|
||||
FT_DECLARE(ftdm_caller_data_t *) ftdm_channel_get_caller_data(ftdm_channel_t *channel);
|
||||
|
||||
/*! \brief Get current state of a channel */
|
||||
FT_DECLARE(int) ftdm_channel_get_state(const ftdm_channel_t *ftdmchan);
|
||||
|
||||
/*! \brief Get last state of a channel */
|
||||
FT_DECLARE(int) ftdm_channel_get_last_state(const ftdm_channel_t *ftdmchan);
|
||||
|
||||
/*! \brief For display debugging purposes you can display this string which describes the current channel internal state */
|
||||
FT_DECLARE(const char *) ftdm_channel_get_state_str(const ftdm_channel_t *channel);
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ extern "C" {
|
||||
#define FT_DECLARE_NONSTD(type) __declspec(dllimport) type __cdecl
|
||||
#define FT_DECLARE_DATA __declspec(dllimport)
|
||||
#endif
|
||||
#define FT_DECLARE_INLINE(type) type
|
||||
#define FT_DECLARE_INLINE(type) extern __inline__ type /* why extern? see http://support.microsoft.com/kb/123768 */
|
||||
#define EX_DECLARE_DATA __declspec(dllexport)
|
||||
#else
|
||||
#if (defined(__GNUC__) || defined(__SUNPRO_CC) || defined (__SUNPRO_C)) && defined(HAVE_VISIBILITY)
|
||||
@@ -82,7 +82,7 @@ extern "C" {
|
||||
#define FT_DECLARE_NONSTD(type) type
|
||||
#define FT_DECLARE_DATA
|
||||
#endif
|
||||
#define FT_DECLARE_INLINE(type) type __inline__
|
||||
#define FT_DECLARE_INLINE(type) __inline__ type
|
||||
#define EX_DECLARE_DATA
|
||||
#endif
|
||||
|
||||
|
||||
@@ -222,6 +222,8 @@ extern "C" {
|
||||
|
||||
#define ftdm_is_dtmf(key) ((key > 47 && key < 58) || (key > 64 && key < 69) || (key > 96 && key < 101) || key == 35 || key == 42 || key == 87 || key == 119)
|
||||
|
||||
#define FTDM_SPAN_IS_BRI(x) ((x)->trunk_type == FTDM_TRUNK_BRI || (x)->trunk_type == FTDM_TRUNK_BRI_PTMP)
|
||||
|
||||
/*!
|
||||
\brief Copy flags from one arbitrary object to another
|
||||
\command dest the object to copy the flags to
|
||||
@@ -422,7 +424,9 @@ struct ftdm_channel {
|
||||
ftdm_fsk_data_state_t fsk;
|
||||
uint8_t fsk_buf[80];
|
||||
uint32_t ring_count;
|
||||
void *mod_data;
|
||||
/* Private I/O data. Do not touch unless you are an I/O module */
|
||||
void *io_data;
|
||||
/* Private signaling data. Do not touch unless you are a signaling module */
|
||||
void *call_data;
|
||||
struct ftdm_caller_data caller_data;
|
||||
struct ftdm_span *span;
|
||||
@@ -454,6 +458,7 @@ struct ftdm_span {
|
||||
ftdm_trunk_type_t trunk_type;
|
||||
ftdm_analog_start_type_t start_type;
|
||||
ftdm_signal_type_t signal_type;
|
||||
/* Private signaling data. Do not touch unless you are a signaling module */
|
||||
void *signal_data;
|
||||
fio_signal_cb_t signal_cb;
|
||||
ftdm_event_t event_header;
|
||||
@@ -471,7 +476,8 @@ struct ftdm_span {
|
||||
ftdm_span_start_t start;
|
||||
ftdm_span_stop_t stop;
|
||||
ftdm_channel_sig_read_t sig_read;
|
||||
void *mod_data;
|
||||
/* Private I/O data per span. Do not touch unless you are an I/O module */
|
||||
void *io_data;
|
||||
char *type;
|
||||
char *dtmf_hangup;
|
||||
size_t dtmf_hangup_len;
|
||||
|
||||
@@ -176,10 +176,11 @@ typedef enum {
|
||||
FTDM_SPAN_USE_CHAN_QUEUE = (1 << 6),
|
||||
FTDM_SPAN_SUGGEST_CHAN_ID = (1 << 7),
|
||||
FTDM_SPAN_USE_AV_RATE = (1 << 8),
|
||||
FTDM_SPAN_PWR_SAVING = (1 << 9),
|
||||
/* If you use this flag, you MUST call ftdm_span_trigger_signals to deliver the user signals
|
||||
* after having called ftdm_send_span_signal(), which with this flag it will just enqueue the signal
|
||||
* for later delivery */
|
||||
FTDM_SPAN_USE_SIGNALS_QUEUE = (1 << 9),
|
||||
FTDM_SPAN_USE_SIGNALS_QUEUE = (1 << 10),
|
||||
} ftdm_span_flag_t;
|
||||
|
||||
/*! \brief Channel supported features */
|
||||
|
||||
Vendored
+9
-3
@@ -1,13 +1,13 @@
|
||||
# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
|
||||
#
|
||||
# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
|
||||
# Written by Scott James Remnant, 2004.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 4 lt~obsolete.m4
|
||||
# serial 5 lt~obsolete.m4
|
||||
|
||||
# These exist entirely to fool aclocal when bootstrapping libtool.
|
||||
#
|
||||
@@ -77,7 +77,6 @@ m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
|
||||
m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
|
||||
m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
|
||||
m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
|
||||
m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
|
||||
@@ -90,3 +89,10 @@ m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
|
||||
m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
|
||||
m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
|
||||
m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
|
||||
m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
|
||||
m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
|
||||
m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])])
|
||||
m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])])
|
||||
m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])])
|
||||
|
||||
@@ -898,7 +898,7 @@ tryagain:
|
||||
|
||||
static void handle_call_loop_start(zap_span_t *span, sangomabc_connection_t *mcon, sangomabc_short_event_t *event)
|
||||
{
|
||||
zap_status_t res = ZAP_FAIL;
|
||||
zap_state_change_result_t res = ZAP_FAIL;
|
||||
zap_channel_t *zchan;
|
||||
|
||||
if (!(zchan = find_zchan(span, (sangomabc_short_event_t*)event, 0))) {
|
||||
@@ -923,7 +923,7 @@ static void handle_call_loop_start(zap_span_t *span, sangomabc_connection_t *mco
|
||||
|
||||
static __inline__ void stop_loop(zap_channel_t *zchan)
|
||||
{
|
||||
zap_status_t res = ZAP_FAIL;
|
||||
zap_state_change_result_t res = ZAP_STATE_CHANGE_FAIL;
|
||||
zap_channel_command(zchan, ZAP_COMMAND_DISABLE_LOOP, NULL);
|
||||
/* even when we did not sent a msg we set this flag to avoid sending call stop in the DOWN state handler */
|
||||
zap_set_flag(zchan, SFLAG_SENT_FINAL_MSG);
|
||||
|
||||
@@ -1119,7 +1119,14 @@ ZIO_SPAN_NEXT_EVENT_FUNCTION(wanpipe_next_event)
|
||||
event_id = ZAP_OOB_NOOP;
|
||||
|
||||
//zap_log(ZAP_LOG_WARNING, "%d:%d queue hardware dtmf %s %s\n", zchan->span_id, zchan->chan_id, tmp_dtmf,
|
||||
//tdm_api.wp_tdm_cmd.event.wp_tdm_api_event_dtmf_type == WAN_EC_TONE_PRESENT ? "on" : "off");
|
||||
//tdm_api.wp_tdm_cmd.event.wp_tdm_api_event_dtmf_type == WAN_EC_TONE_PRESENT ? "on" : "off");
|
||||
if (tmp_dtmf[0] == 'f') {
|
||||
if (zap_test_flag(zchan, ZAP_CHANNEL_INUSE)) {
|
||||
zap_channel_queue_dtmf(zchan, tmp_dtmf);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (tdm_api.wp_tdm_cmd.event.wp_tdm_api_event_dtmf_type == WAN_EC_TONE_PRESENT) {
|
||||
zap_set_flag_locked(zchan, ZAP_CHANNEL_MUTE);
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
Mon May 31 09:47:08 EDT 2010
|
||||
Wed Nov 3 13:53:34 EDT 2010
|
||||
|
||||
@@ -1674,7 +1674,7 @@ int agent_set_params(nta_agent_t *agent, tagi_t *tags)
|
||||
progress = 60 * 1000;
|
||||
agent->sa_progress = progress;
|
||||
|
||||
if (server_rport > 2)
|
||||
if (server_rport > 3)
|
||||
server_rport = 1;
|
||||
else if (server_rport < 0)
|
||||
server_rport = 1;
|
||||
@@ -3084,7 +3084,9 @@ int agent_check_request_via(nta_agent_t *agent,
|
||||
rport = su_sprintf(msg_home(msg), "rport=%u", ntohs(from->su_port));
|
||||
msg_header_replace_param(msg_home(msg), v->v_common, rport);
|
||||
}
|
||||
else if (agent->sa_server_rport == 2) {
|
||||
else if (agent->sa_server_rport == 2 ||
|
||||
(agent->sa_server_rport == 3 && sip && sip->sip_user_agent &&
|
||||
sip->sip_user_agent->g_string && !strncasecmp(sip->sip_user_agent->g_string, "Polycom", 7))) {
|
||||
rport = su_sprintf(msg_home(msg), "rport=%u", ntohs(from->su_port));
|
||||
msg_header_replace_param(msg_home(msg), v->v_common, rport);
|
||||
}
|
||||
@@ -8174,9 +8176,12 @@ outgoing_send(nta_outgoing_t *orq, int retransmit)
|
||||
|
||||
if (orq->orq_method == sip_method_ack)
|
||||
;
|
||||
else if (!orq->orq_reliable)
|
||||
outgoing_set_timer(orq, agent->sa_t1); /* Timer A/E */
|
||||
else if (orq->orq_try_tcp_instead && !tport_is_connected(tp))
|
||||
else if (!orq->orq_reliable) {
|
||||
/* race condition on initial t1 timer timeout, set minimum initial timeout to 1000ms */
|
||||
unsigned t1_timer = agent->sa_t1;
|
||||
if (t1_timer < 1000) t1_timer = 1000;
|
||||
outgoing_set_timer(orq, t1_timer); /* Timer A/E */
|
||||
} else if (orq->orq_try_tcp_instead && !tport_is_connected(tp))
|
||||
outgoing_set_timer(orq, agent->sa_t4); /* Timer N3 */
|
||||
}
|
||||
|
||||
@@ -8660,6 +8665,10 @@ void outgoing_destroy(nta_outgoing_t *orq)
|
||||
orq->orq_destroyed = 1;
|
||||
orq->orq_callback = outgoing_default_cb;
|
||||
orq->orq_magic = NULL;
|
||||
|
||||
if (orq->orq_method != sip_method_invite &&
|
||||
orq->orq_method != sip_method_ack)
|
||||
outgoing_terminate(orq);
|
||||
}
|
||||
|
||||
/** @internal Outgoing transaction timer routine.
|
||||
|
||||
+67
-74
@@ -38,7 +38,6 @@ struct stfu_queue {
|
||||
uint32_t array_size;
|
||||
uint32_t array_len;
|
||||
uint32_t wr_len;
|
||||
uint32_t last_index;
|
||||
};
|
||||
typedef struct stfu_queue stfu_queue_t;
|
||||
|
||||
@@ -47,10 +46,12 @@ struct stfu_instance {
|
||||
struct stfu_queue b_queue;
|
||||
struct stfu_queue *in_queue;
|
||||
struct stfu_queue *out_queue;
|
||||
uint32_t last_ts;
|
||||
struct stfu_frame *last_frame;
|
||||
uint32_t last_wr_ts;
|
||||
uint32_t last_rd_ts;
|
||||
uint32_t interval;
|
||||
uint32_t miss_count;
|
||||
uint8_t running;
|
||||
uint32_t max_plc;
|
||||
};
|
||||
|
||||
|
||||
@@ -112,7 +113,7 @@ stfu_status_t stfu_n_resize(stfu_instance_t *i, uint32_t qlen)
|
||||
return s;
|
||||
}
|
||||
|
||||
stfu_instance_t *stfu_n_init(uint32_t qlen)
|
||||
stfu_instance_t *stfu_n_init(uint32_t qlen, uint32_t max_plc)
|
||||
{
|
||||
struct stfu_instance *i;
|
||||
|
||||
@@ -125,6 +126,13 @@ stfu_instance_t *stfu_n_init(uint32_t qlen)
|
||||
stfu_n_init_aqueue(&i->b_queue, qlen);
|
||||
i->in_queue = &i->a_queue;
|
||||
i->out_queue = &i->b_queue;
|
||||
|
||||
if (max_plc) {
|
||||
i->max_plc = max_plc;
|
||||
} else {
|
||||
i->max_plc = qlen / 2;
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
@@ -135,10 +143,9 @@ void stfu_n_reset(stfu_instance_t *i)
|
||||
i->in_queue->array_len = 0;
|
||||
i->out_queue->array_len = 0;
|
||||
i->out_queue->wr_len = 0;
|
||||
i->out_queue->last_index = 0;
|
||||
i->last_frame = NULL;
|
||||
i->miss_count = 0;
|
||||
i->last_ts = 0;
|
||||
i->running = 0;
|
||||
i->last_wr_ts = 0;
|
||||
i->miss_count = 0;
|
||||
i->interval = 0;
|
||||
}
|
||||
@@ -197,7 +204,7 @@ stfu_status_t stfu_n_add_data(stfu_instance_t *i, uint32_t ts, uint32_t pt, void
|
||||
|
||||
i->in_queue->array_len = 0;
|
||||
i->out_queue->wr_len = 0;
|
||||
i->out_queue->last_index = 0;
|
||||
i->last_frame = NULL;
|
||||
i->miss_count = 0;
|
||||
|
||||
if (stfu_n_process(i, i->out_queue) < 0) {
|
||||
@@ -222,6 +229,8 @@ stfu_status_t stfu_n_add_data(stfu_instance_t *i, uint32_t ts, uint32_t pt, void
|
||||
cplen = sizeof(frame->data);
|
||||
}
|
||||
|
||||
i->last_rd_ts = ts;
|
||||
|
||||
memcpy(frame->data, data, cplen);
|
||||
frame->pt = pt;
|
||||
frame->ts = ts;
|
||||
@@ -231,87 +240,71 @@ stfu_status_t stfu_n_add_data(stfu_instance_t *i, uint32_t ts, uint32_t pt, void
|
||||
return STFU_IT_WORKED;
|
||||
}
|
||||
|
||||
static int stfu_n_find_frame(stfu_queue_t *queue, uint32_t ts, stfu_frame_t **r_frame, uint32_t *index)
|
||||
{
|
||||
uint32_t i = 0;
|
||||
stfu_frame_t *frame = NULL;
|
||||
|
||||
assert(r_frame);
|
||||
assert(index);
|
||||
|
||||
*r_frame = NULL;
|
||||
|
||||
for(i = 0; i < queue->array_len; i++) {
|
||||
frame = &queue->array[i];
|
||||
|
||||
if (frame->ts == ts) {
|
||||
*r_frame = frame;
|
||||
*index = i;
|
||||
frame->was_read = 1;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
stfu_frame_t *stfu_n_read_a_frame(stfu_instance_t *i)
|
||||
{
|
||||
uint32_t index, index2;
|
||||
uint32_t index;
|
||||
uint32_t should_have = 0;
|
||||
stfu_frame_t *frame = NULL, *rframe = NULL;
|
||||
stfu_frame_t *rframe = NULL;
|
||||
|
||||
if (((i->out_queue->wr_len == i->out_queue->array_len) || !i->out_queue->array_len)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (i->running) {
|
||||
should_have = i->last_ts + i->interval;
|
||||
if (i->last_wr_ts) {
|
||||
should_have = i->last_wr_ts + i->interval;
|
||||
} else {
|
||||
should_have = i->out_queue->array[0].ts;
|
||||
}
|
||||
|
||||
for(index = 0; index < i->out_queue->array_len; index++) {
|
||||
if (i->out_queue->array[index].was_read) {
|
||||
continue;
|
||||
}
|
||||
|
||||
frame = &i->out_queue->array[index];
|
||||
|
||||
if (frame->ts != should_have) {
|
||||
unsigned int tried = 0;
|
||||
for (index2 = 0; index2 < i->out_queue->array_len; index2++) {
|
||||
if (i->out_queue->array[index2].was_read) {
|
||||
continue;
|
||||
}
|
||||
tried++;
|
||||
if (i->out_queue->array[index2].ts == should_have) {
|
||||
rframe = &i->out_queue->array[index2];
|
||||
i->out_queue->last_index = index2;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
for (index2 = 0; index2 < i->in_queue->array_len; index2++) {
|
||||
if (i->in_queue->array[index2].was_read) {
|
||||
continue;
|
||||
}
|
||||
tried++;
|
||||
if (i->in_queue->array[index2].ts == should_have) {
|
||||
rframe = &i->in_queue->array[index2];
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
i->miss_count++;
|
||||
|
||||
if (i->miss_count > 10 || (i->in_queue->array_len == i->in_queue->array_size) || tried >= i->in_queue->array_size) {
|
||||
i->running = 0;
|
||||
i->interval = 0;
|
||||
i->out_queue->wr_len = i->out_queue->array_size;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
i->last_ts = should_have;
|
||||
rframe = &i->out_queue->int_frame;
|
||||
rframe->dlen = i->out_queue->array[i->out_queue->last_index].dlen;
|
||||
/* poor man's plc.. Copy the last frame, but we flag it so you can use a better one if you wish */
|
||||
memcpy(rframe->data, i->out_queue->array[i->out_queue->last_index].data, rframe->dlen);
|
||||
rframe->ts = should_have;
|
||||
i->out_queue->wr_len++;
|
||||
i->running = 1;
|
||||
return rframe;
|
||||
} else {
|
||||
rframe = &i->out_queue->array[index];
|
||||
i->out_queue->last_index = index;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
done:
|
||||
|
||||
if (rframe) {
|
||||
if (stfu_n_find_frame(i->out_queue, should_have, &rframe, &index) || stfu_n_find_frame(i->in_queue, should_have, &rframe, &index)) {
|
||||
i->last_frame = rframe;
|
||||
i->out_queue->wr_len++;
|
||||
i->last_ts = rframe->ts;
|
||||
i->last_wr_ts = rframe->ts;
|
||||
rframe->was_read = 1;
|
||||
i->running = 1;
|
||||
i->miss_count = 0;
|
||||
}
|
||||
} else {
|
||||
i->last_wr_ts = should_have;
|
||||
rframe = &i->out_queue->int_frame;
|
||||
|
||||
if (i->last_frame && i->last_frame != rframe) {
|
||||
rframe->dlen = i->last_frame->dlen;
|
||||
/* poor man's plc.. Copy the last frame, but we flag it so you can use a better one if you wish */
|
||||
memcpy(rframe->data, i->last_frame->data, rframe->dlen);
|
||||
}
|
||||
|
||||
rframe->ts = should_have;
|
||||
|
||||
if (++i->miss_count > i->max_plc) {
|
||||
i->interval = 0;
|
||||
i->out_queue->wr_len = i->out_queue->array_size;
|
||||
i->last_wr_ts = 0;
|
||||
rframe = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return rframe;
|
||||
}
|
||||
|
||||
+1
-1
@@ -96,7 +96,7 @@ typedef struct {
|
||||
|
||||
void stfu_n_report(stfu_instance_t *i, stfu_report_t *r);
|
||||
void stfu_n_destroy(stfu_instance_t **i);
|
||||
stfu_instance_t *stfu_n_init(uint32_t qlen);
|
||||
stfu_instance_t *stfu_n_init(uint32_t qlen, uint32_t max_plc);
|
||||
stfu_status_t stfu_n_resize(stfu_instance_t *i, uint32_t qlen);
|
||||
stfu_status_t stfu_n_add_data(stfu_instance_t *i, uint32_t ts, uint32_t pt, void *data, size_t datalen, int last);
|
||||
stfu_frame_t *stfu_n_read_a_frame(stfu_instance_t *i);
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
<Platform
|
||||
Name="x64"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
@@ -33,7 +36,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\16000\*.*" "$(OutDir)\sounds\en\us\callie\voicemail\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\16000\*.*" "$(OutDir)\sounds\en\us\callie\ivr\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\16000\*.*" "$(OutDir)\sounds\en\us\callie\conference\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\16000\*.*" "$(OutDir)\sounds\en\us\callie\time\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\16000\*.*" "$(OutDir)\sounds\en\us\callie\digits\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\16000\*.*" "$(OutDir)\sounds\en\us\callie\ascii\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\16000\*.*" "$(OutDir)\sounds\en\us\callie\misc\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\16000\*.*" "$(OutDir)\sounds\en\us\callie\currency\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\16000\*.*" "$(OutDir)\sounds\en\us\callie\phonetic-ascii\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\directory\16000\*.*" "$(OutDir)\sounds\en\us\callie\directory\16000" /C /D /Y /S /I"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\16000\*.*" "$(OutDir)\sounds\en\us\callie\voicemail\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\16000\*.*" "$(OutDir)\sounds\en\us\callie\ivr\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\16000\*.*" "$(OutDir)\sounds\en\us\callie\conference\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\16000\*.*" "$(OutDir)\sounds\en\us\callie\time\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\16000\*.*" "$(OutDir)\sounds\en\us\callie\digits\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\16000\*.*" "$(OutDir)\sounds\en\us\callie\ascii\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\16000\*.*" "$(OutDir)\sounds\en\us\callie\misc\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\16000\*.*" "$(OutDir)\sounds\en\us\callie\currency\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\16000\*.*" "$(OutDir)\sounds\en\us\callie\phonetic-ascii\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\directory\16000\*.*" "$(OutDir)\sounds\en\us\callie\directory\16000" /C /D /Y /S /I
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
@@ -55,7 +58,52 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\16000\*.*" "$(OutDir)\sounds\en\us\callie\voicemail\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\16000\*.*" "$(OutDir)\sounds\en\us\callie\ivr\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\16000\*.*" "$(OutDir)\sounds\en\us\callie\conference\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\16000\*.*" "$(OutDir)\sounds\en\us\callie\time\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\16000\*.*" "$(OutDir)\sounds\en\us\callie\digits\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\16000\*.*" "$(OutDir)\sounds\en\us\callie\ascii\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\16000\*.*" "$(OutDir)\sounds\en\us\callie\misc\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\16000\*.*" "$(OutDir)\sounds\en\us\callie\currency\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\16000\*.*" "$(OutDir)\sounds\en\us\callie\phonetic-ascii\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\directory\16000\*.*" "$(OutDir)\sounds\en\us\callie\directory\16000" /C /D /Y /S /I"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\16000\*.*" "$(OutDir)\sounds\en\us\callie\voicemail\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\16000\*.*" "$(OutDir)\sounds\en\us\callie\ivr\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\16000\*.*" "$(OutDir)\sounds\en\us\callie\conference\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\16000\*.*" "$(OutDir)\sounds\en\us\callie\time\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\16000\*.*" "$(OutDir)\sounds\en\us\callie\digits\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\16000\*.*" "$(OutDir)\sounds\en\us\callie\ascii\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\16000\*.*" "$(OutDir)\sounds\en\us\callie\misc\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\16000\*.*" "$(OutDir)\sounds\en\us\callie\currency\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\16000\*.*" "$(OutDir)\sounds\en\us\callie\phonetic-ascii\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\directory\16000\*.*" "$(OutDir)\sounds\en\us\callie\directory\16000" /C /D /Y /S /I
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="10"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\16000\*.*" "$(OutDir)\sounds\en\us\callie\voicemail\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\16000\*.*" "$(OutDir)\sounds\en\us\callie\ivr\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\16000\*.*" "$(OutDir)\sounds\en\us\callie\conference\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\16000\*.*" "$(OutDir)\sounds\en\us\callie\time\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\16000\*.*" "$(OutDir)\sounds\en\us\callie\digits\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\16000\*.*" "$(OutDir)\sounds\en\us\callie\ascii\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\16000\*.*" "$(OutDir)\sounds\en\us\callie\misc\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\16000\*.*" "$(OutDir)\sounds\en\us\callie\currency\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\16000\*.*" "$(OutDir)\sounds\en\us\callie\phonetic-ascii\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\directory\16000\*.*" "$(OutDir)\sounds\en\us\callie\directory\16000" /C /D /Y /S /I
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="10"
|
||||
CharacterSet="2"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\16000\*.*" "$(OutDir)\sounds\en\us\callie\voicemail\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\16000\*.*" "$(OutDir)\sounds\en\us\callie\ivr\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\16000\*.*" "$(OutDir)\sounds\en\us\callie\conference\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\16000\*.*" "$(OutDir)\sounds\en\us\callie\time\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\16000\*.*" "$(OutDir)\sounds\en\us\callie\digits\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\16000\*.*" "$(OutDir)\sounds\en\us\callie\ascii\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\16000\*.*" "$(OutDir)\sounds\en\us\callie\misc\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\16000\*.*" "$(OutDir)\sounds\en\us\callie\currency\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\16000\*.*" "$(OutDir)\sounds\en\us\callie\phonetic-ascii\16000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\directory\16000\*.*" "$(OutDir)\sounds\en\us\callie\directory\16000" /C /D /Y /S /I
"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
<Platform
|
||||
Name="x64"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
@@ -58,6 +61,51 @@
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\music\16000\*.*" "$(OutDir)\sounds\music\16000" /C /D /Y /S /I
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="10"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\music\16000\*.*" "$(OutDir)\sounds\music\16000" /C /D /Y /S /I
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="10"
|
||||
CharacterSet="2"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\music\16000\*.*" "$(OutDir)\sounds\music\16000" /C /D /Y /S /I
"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
<Platform
|
||||
Name="x64"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
@@ -33,7 +36,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\32000\*.*" "$(OutDir)\sounds\en\us\callie\voicemail\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\32000\*.*" "$(OutDir)\sounds\en\us\callie\ivr\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\32000\*.*" "$(OutDir)\sounds\en\us\callie\conference\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\32000\*.*" "$(OutDir)\sounds\en\us\callie\time\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\32000\*.*" "$(OutDir)\sounds\en\us\callie\digits\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\32000\*.*" "$(OutDir)\sounds\en\us\callie\ascii\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\32000\*.*" "$(OutDir)\sounds\en\us\callie\misc\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\32000\*.*" "$(OutDir)\sounds\en\us\callie\currency\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\32000\*.*" "$(OutDir)\sounds\en\us\callie\phonetic-ascii\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\directory\32000\*.*" "$(OutDir)\sounds\en\us\callie\directory\32000" /C /D /Y /S /I"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\32000\*.*" "$(OutDir)\sounds\en\us\callie\voicemail\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\32000\*.*" "$(OutDir)\sounds\en\us\callie\ivr\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\32000\*.*" "$(OutDir)\sounds\en\us\callie\conference\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\32000\*.*" "$(OutDir)\sounds\en\us\callie\time\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\32000\*.*" "$(OutDir)\sounds\en\us\callie\digits\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\32000\*.*" "$(OutDir)\sounds\en\us\callie\ascii\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\32000\*.*" "$(OutDir)\sounds\en\us\callie\misc\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\32000\*.*" "$(OutDir)\sounds\en\us\callie\currency\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\32000\*.*" "$(OutDir)\sounds\en\us\callie\phonetic-ascii\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\directory\32000\*.*" "$(OutDir)\sounds\en\us\callie\directory\32000" /C /D /Y /S /I
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
@@ -55,7 +58,52 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\32000\*.*" "$(OutDir)\sounds\en\us\callie\voicemail\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\32000\*.*" "$(OutDir)\sounds\en\us\callie\ivr\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\32000\*.*" "$(OutDir)\sounds\en\us\callie\conference\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\32000\*.*" "$(OutDir)\sounds\en\us\callie\time\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\32000\*.*" "$(OutDir)\sounds\en\us\callie\digits\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\32000\*.*" "$(OutDir)\sounds\en\us\callie\ascii\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\32000\*.*" "$(OutDir)\sounds\en\us\callie\misc\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\32000\*.*" "$(OutDir)\sounds\en\us\callie\currency\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\32000\*.*" "$(OutDir)\sounds\en\us\callie\phonetic-ascii\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\directory\32000\*.*" "$(OutDir)\sounds\en\us\callie\directory\32000" /C /D /Y /S /I"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\32000\*.*" "$(OutDir)\sounds\en\us\callie\voicemail\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\32000\*.*" "$(OutDir)\sounds\en\us\callie\ivr\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\32000\*.*" "$(OutDir)\sounds\en\us\callie\conference\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\32000\*.*" "$(OutDir)\sounds\en\us\callie\time\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\32000\*.*" "$(OutDir)\sounds\en\us\callie\digits\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\32000\*.*" "$(OutDir)\sounds\en\us\callie\ascii\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\32000\*.*" "$(OutDir)\sounds\en\us\callie\misc\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\32000\*.*" "$(OutDir)\sounds\en\us\callie\currency\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\32000\*.*" "$(OutDir)\sounds\en\us\callie\phonetic-ascii\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\directory\32000\*.*" "$(OutDir)\sounds\en\us\callie\directory\32000" /C /D /Y /S /I
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="10"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\32000\*.*" "$(OutDir)\sounds\en\us\callie\voicemail\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\32000\*.*" "$(OutDir)\sounds\en\us\callie\ivr\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\32000\*.*" "$(OutDir)\sounds\en\us\callie\conference\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\32000\*.*" "$(OutDir)\sounds\en\us\callie\time\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\32000\*.*" "$(OutDir)\sounds\en\us\callie\digits\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\32000\*.*" "$(OutDir)\sounds\en\us\callie\ascii\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\32000\*.*" "$(OutDir)\sounds\en\us\callie\misc\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\32000\*.*" "$(OutDir)\sounds\en\us\callie\currency\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\32000\*.*" "$(OutDir)\sounds\en\us\callie\phonetic-ascii\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\directory\32000\*.*" "$(OutDir)\sounds\en\us\callie\directory\32000" /C /D /Y /S /I
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="10"
|
||||
CharacterSet="2"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\32000\*.*" "$(OutDir)\sounds\en\us\callie\voicemail\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\32000\*.*" "$(OutDir)\sounds\en\us\callie\ivr\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\32000\*.*" "$(OutDir)\sounds\en\us\callie\conference\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\32000\*.*" "$(OutDir)\sounds\en\us\callie\time\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\32000\*.*" "$(OutDir)\sounds\en\us\callie\digits\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\32000\*.*" "$(OutDir)\sounds\en\us\callie\ascii\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\32000\*.*" "$(OutDir)\sounds\en\us\callie\misc\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\32000\*.*" "$(OutDir)\sounds\en\us\callie\currency\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\32000\*.*" "$(OutDir)\sounds\en\us\callie\phonetic-ascii\32000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\directory\32000\*.*" "$(OutDir)\sounds\en\us\callie\directory\32000" /C /D /Y /S /I
"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
<Platform
|
||||
Name="x64"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
@@ -58,6 +61,51 @@
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\music\32000\*.*" "$(OutDir)\sounds\music\32000" /C /D /Y /S /I"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="10"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\music\32000\*.*" "$(OutDir)\sounds\music\32000" /C /D /Y /S /I"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="10"
|
||||
CharacterSet="2"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\music\32000\*.*" "$(OutDir)\sounds\music\32000" /C /D /Y /S /I"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
<Platform
|
||||
Name="x64"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
@@ -33,7 +36,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\8000\*.*" "$(OutDir)\sounds\en\us\callie\voicemail\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\8000\*.*" "$(OutDir)\sounds\en\us\callie\ivr\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\8000\*.*" "$(OutDir)\sounds\en\us\callie\conference\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\8000\*.*" "$(OutDir)\sounds\en\us\callie\time\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\8000\*.*" "$(OutDir)\sounds\en\us\callie\digits\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\8000\*.*" "$(OutDir)\sounds\en\us\callie\ascii\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\8000\*.*" "$(OutDir)\sounds\en\us\callie\misc\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\8000\*.*" "$(OutDir)\sounds\en\us\callie\currency\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\8000\*.*" "$(OutDir)\sounds\en\us\callie\phonetic-ascii\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\directory\8000\*.*" "$(OutDir)\sounds\en\us\callie\directory\8000" /C /D /Y /S /I"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\8000\*.*" "$(OutDir)\sounds\en\us\callie\voicemail\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\8000\*.*" "$(OutDir)\sounds\en\us\callie\ivr\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\8000\*.*" "$(OutDir)\sounds\en\us\callie\conference\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\8000\*.*" "$(OutDir)\sounds\en\us\callie\time\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\8000\*.*" "$(OutDir)\sounds\en\us\callie\digits\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\8000\*.*" "$(OutDir)\sounds\en\us\callie\ascii\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\8000\*.*" "$(OutDir)\sounds\en\us\callie\misc\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\8000\*.*" "$(OutDir)\sounds\en\us\callie\currency\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\8000\*.*" "$(OutDir)\sounds\en\us\callie\phonetic-ascii\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\directory\8000\*.*" "$(OutDir)\sounds\en\us\callie\directory\8000" /C /D /Y /S /I
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
@@ -55,7 +58,52 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\8000\*.*" "$(OutDir)\sounds\en\us\callie\voicemail\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\8000\*.*" "$(OutDir)\sounds\en\us\callie\ivr\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\8000\*.*" "$(OutDir)\sounds\en\us\callie\conference\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\8000\*.*" "$(OutDir)\sounds\en\us\callie\time\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\8000\*.*" "$(OutDir)\sounds\en\us\callie\digits\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\8000\*.*" "$(OutDir)\sounds\en\us\callie\ascii\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\8000\*.*" "$(OutDir)\sounds\en\us\callie\misc\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\8000\*.*" "$(OutDir)\sounds\en\us\callie\currency\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\8000\*.*" "$(OutDir)\sounds\en\us\callie\phonetic-ascii\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\directory\8000\*.*" "$(OutDir)\sounds\en\us\callie\directory\8000" /C /D /Y /S /I"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\8000\*.*" "$(OutDir)\sounds\en\us\callie\voicemail\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\8000\*.*" "$(OutDir)\sounds\en\us\callie\ivr\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\8000\*.*" "$(OutDir)\sounds\en\us\callie\conference\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\8000\*.*" "$(OutDir)\sounds\en\us\callie\time\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\8000\*.*" "$(OutDir)\sounds\en\us\callie\digits\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\8000\*.*" "$(OutDir)\sounds\en\us\callie\ascii\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\8000\*.*" "$(OutDir)\sounds\en\us\callie\misc\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\8000\*.*" "$(OutDir)\sounds\en\us\callie\currency\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\8000\*.*" "$(OutDir)\sounds\en\us\callie\phonetic-ascii\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\directory\8000\*.*" "$(OutDir)\sounds\en\us\callie\directory\8000" /C /D /Y /S /I
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="10"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\8000\*.*" "$(OutDir)\sounds\en\us\callie\voicemail\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\8000\*.*" "$(OutDir)\sounds\en\us\callie\ivr\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\8000\*.*" "$(OutDir)\sounds\en\us\callie\conference\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\8000\*.*" "$(OutDir)\sounds\en\us\callie\time\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\8000\*.*" "$(OutDir)\sounds\en\us\callie\digits\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\8000\*.*" "$(OutDir)\sounds\en\us\callie\ascii\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\8000\*.*" "$(OutDir)\sounds\en\us\callie\misc\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\8000\*.*" "$(OutDir)\sounds\en\us\callie\currency\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\8000\*.*" "$(OutDir)\sounds\en\us\callie\phonetic-ascii\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\directory\8000\*.*" "$(OutDir)\sounds\en\us\callie\directory\8000" /C /D /Y /S /I
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="10"
|
||||
CharacterSet="2"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\en\us\callie\voicemail\8000\*.*" "$(OutDir)\sounds\en\us\callie\voicemail\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ivr\8000\*.*" "$(OutDir)\sounds\en\us\callie\ivr\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\conference\8000\*.*" "$(OutDir)\sounds\en\us\callie\conference\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\time\8000\*.*" "$(OutDir)\sounds\en\us\callie\time\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\digits\8000\*.*" "$(OutDir)\sounds\en\us\callie\digits\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\ascii\8000\*.*" "$(OutDir)\sounds\en\us\callie\ascii\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\misc\8000\*.*" "$(OutDir)\sounds\en\us\callie\misc\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\currency\8000\*.*" "$(OutDir)\sounds\en\us\callie\currency\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\phonetic-ascii\8000\*.*" "$(OutDir)\sounds\en\us\callie\phonetic-ascii\8000" /C /D /Y /S /I
xcopy "$(SolutionDir)libs\sounds\en\us\callie\directory\8000\*.*" "$(OutDir)\sounds\en\us\callie\directory\8000" /C /D /Y /S /I
"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
<Platform
|
||||
Name="x64"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
@@ -58,6 +61,51 @@
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\music\8000\*.*" "$(OutDir)\sounds\music\8000" /C /D /Y /S /I
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="10"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\music\8000\*.*" "$(OutDir)\sounds\music\8000" /C /D /Y /S /I
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="10"
|
||||
CharacterSet="2"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="xcopy "$(SolutionDir)libs\sounds\music\8000\*.*" "$(OutDir)\sounds\music\8000" /C /D /Y /S /I
"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
|
||||
@@ -172,7 +172,7 @@
|
||||
Optimization="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
AdditionalIncludeDirectories="."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;HAVE_STDARG_H;STDC_HEADERS"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;HAVE_STDARG_H;STDC_HEADERS"
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
@@ -236,7 +236,7 @@
|
||||
Optimization="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
AdditionalIncludeDirectories="."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;HAVE_STDARG_H;STDC_HEADERS"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;HAVE_STDARG_H;STDC_HEADERS"
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;HAVE_STDARG_H;STDC_HEADERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;HAVE_STDARG_H;STDC_HEADERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
@@ -110,7 +110,7 @@
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;HAVE_STDARG_H;STDC_HEADERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;HAVE_STDARG_H;STDC_HEADERS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="copy /Y $(ProjectDir)opensslconf.h $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\opensslconf.h
copy /Y $(ProjectDir)applink.c $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\applink.c
copy /Y $(ProjectDir)buildinf.h $(ProjectDir)..\..\openssl-1.0.0a\crypto\buildinf.h
copy /Y $(ProjectDir)libeay32.def $(ProjectDir)..\..\openssl-1.0.0a\libeay32.def
if not exist " $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\e_os.h" xcopy "$(ProjectDir)\include\*.*" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\" /C /Y /S
"
|
||||
CommandLine="copy /Y "$(ProjectDir)opensslconf.h" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\opensslconf.h"
copy /Y "$(ProjectDir)applink.c" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\applink.c"
copy /Y "$(ProjectDir)buildinf.h" "$(ProjectDir)..\..\openssl-1.0.0a\crypto\buildinf.h"
copy /Y "$(ProjectDir)libeay32.def" "$(ProjectDir)..\..\openssl-1.0.0a\libeay32.def"
if not exist " $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\e_os.h" xcopy "$(ProjectDir)\include\*.*" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\" /C /Y /S
"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
@@ -116,7 +116,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="copy /Y $(ProjectDir)opensslconf.h $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\opensslconf.h
copy /Y $(ProjectDir)applink.c $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\applink.c
copy /Y $(ProjectDir)buildinf.h $(ProjectDir)..\..\openssl-1.0.0a\crypto\buildinf.h
copy /Y $(ProjectDir)libeay32.def $(ProjectDir)..\..\openssl-1.0.0a\libeay32.def
if not exist " $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\e_os.h" xcopy "$(ProjectDir)\include\*.*" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\" /C /Y /S
"
|
||||
CommandLine="copy /Y "$(ProjectDir)opensslconf.h" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\opensslconf.h"
copy /Y "$(ProjectDir)applink.c" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\applink.c"
copy /Y "$(ProjectDir)buildinf.h" "$(ProjectDir)..\..\openssl-1.0.0a\crypto\buildinf.h"
copy /Y "$(ProjectDir)libeay32.def" "$(ProjectDir)..\..\openssl-1.0.0a\libeay32.def"
if not exist " $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\e_os.h" xcopy "$(ProjectDir)\include\*.*" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\" /C /Y /S
"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
@@ -201,7 +201,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="copy /Y $(ProjectDir)opensslconf.h $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\opensslconf.h
copy /Y $(ProjectDir)applink.c $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\applink.c
copy /Y $(ProjectDir)buildinf.h $(ProjectDir)..\..\openssl-1.0.0a\crypto\buildinf.h
copy /Y $(ProjectDir)libeay32.def $(ProjectDir)..\..\openssl-1.0.0a\libeay32.def
if not exist " $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\e_os.h" xcopy "$(ProjectDir)\include\*.*" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\" /C /Y /S
"
|
||||
CommandLine="copy /Y "$(ProjectDir)opensslconf.h" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\opensslconf.h"
copy /Y "$(ProjectDir)applink.c" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\applink.c"
copy /Y "$(ProjectDir)buildinf.h" "$(ProjectDir)..\..\openssl-1.0.0a\crypto\buildinf.h"
copy /Y "$(ProjectDir)libeay32.def" "$(ProjectDir)..\..\openssl-1.0.0a\libeay32.def"
if not exist " $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\e_os.h" xcopy "$(ProjectDir)\include\*.*" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\" /C /Y /S
"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
@@ -286,7 +286,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="copy /Y $(ProjectDir)opensslconf.h $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\opensslconf.h
copy /Y $(ProjectDir)applink.c $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\applink.c
copy /Y $(ProjectDir)buildinf.h $(ProjectDir)..\..\openssl-1.0.0a\crypto\buildinf.h
copy /Y $(ProjectDir)libeay32.def $(ProjectDir)..\..\openssl-1.0.0a\libeay32.def
if not exist " $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\e_os.h" xcopy "$(ProjectDir)\include\*.*" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\" /C /Y /S
"
|
||||
CommandLine="copy /Y "$(ProjectDir)opensslconf.h" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\opensslconf.h"
copy /Y "$(ProjectDir)applink.c" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\applink.c"
copy /Y "$(ProjectDir)buildinf.h" "$(ProjectDir)..\..\openssl-1.0.0a\crypto\buildinf.h"
copy /Y "$(ProjectDir)libeay32.def" "$(ProjectDir)..\..\openssl-1.0.0a\libeay32.def"
if not exist " $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\e_os.h" xcopy "$(ProjectDir)\include\*.*" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\" /C /Y /S
"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
|
||||
@@ -81,10 +81,10 @@
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<PreBuildEvent>
|
||||
<Command>copy /Y $(ProjectDir)opensslconf.h $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\opensslconf.h
|
||||
copy /Y $(ProjectDir)applink.c $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\applink.c
|
||||
copy /Y $(ProjectDir)buildinf.h $(ProjectDir)..\..\openssl-1.0.0a\crypto\buildinf.h
|
||||
copy /Y $(ProjectDir)libeay32.def $(ProjectDir)..\..\openssl-1.0.0a\libeay32.def
|
||||
<Command>copy /Y "$(ProjectDir)opensslconf.h" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\opensslconf.h"
|
||||
copy /Y "$(ProjectDir)applink.c" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\applink.c"
|
||||
copy /Y "$(ProjectDir)buildinf.h" "$(ProjectDir)..\..\openssl-1.0.0a\crypto\buildinf.h"
|
||||
copy /Y "$(ProjectDir)libeay32.def" "$(ProjectDir)..\..\openssl-1.0.0a\libeay32.def"
|
||||
if not exist "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\e_os.h" xcopy "$(ProjectDir)\include\*.*" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\" /C /Y /S
|
||||
</Command>
|
||||
</PreBuildEvent>
|
||||
@@ -115,10 +115,10 @@ if not exist "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\e_os.h" xcopy "$
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<PreBuildEvent>
|
||||
<Command>copy /Y $(ProjectDir)opensslconf.h $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\opensslconf.h
|
||||
copy /Y $(ProjectDir)applink.c $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\applink.c
|
||||
copy /Y $(ProjectDir)buildinf.h $(ProjectDir)..\..\openssl-1.0.0a\crypto\buildinf.h
|
||||
copy /Y $(ProjectDir)libeay32.def $(ProjectDir)..\..\openssl-1.0.0a\libeay32.def
|
||||
<Command>copy /Y "$(ProjectDir)opensslconf.h" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\opensslconf.h"
|
||||
copy /Y "$(ProjectDir)applink.c" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\applink.c"
|
||||
copy /Y "$(ProjectDir)buildinf.h" "$(ProjectDir)..\..\openssl-1.0.0a\crypto\buildinf.h"
|
||||
copy /Y "$(ProjectDir)libeay32.def" "$(ProjectDir)..\..\openssl-1.0.0a\libeay32.def"
|
||||
if not exist "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\e_os.h" xcopy "$(ProjectDir)\include\*.*" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\" /C /Y /S
|
||||
</Command>
|
||||
</PreBuildEvent>
|
||||
@@ -151,10 +151,10 @@ if not exist "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\e_os.h" xcopy "$
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<PreBuildEvent>
|
||||
<Command>copy /Y $(ProjectDir)opensslconf.h $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\opensslconf.h
|
||||
copy /Y $(ProjectDir)applink.c $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\applink.c
|
||||
copy /Y $(ProjectDir)buildinf.h $(ProjectDir)..\..\openssl-1.0.0a\crypto\buildinf.h
|
||||
copy /Y $(ProjectDir)libeay32.def $(ProjectDir)..\..\openssl-1.0.0a\libeay32.def
|
||||
<Command>copy /Y "$(ProjectDir)opensslconf.h" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\opensslconf.h"
|
||||
copy /Y "$(ProjectDir)applink.c" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\applink.c"
|
||||
copy /Y "$(ProjectDir)buildinf.h" "$(ProjectDir)..\..\openssl-1.0.0a\crypto\buildinf.h"
|
||||
copy /Y "$(ProjectDir)libeay32.def" "$(ProjectDir)..\..\openssl-1.0.0a\libeay32.def"
|
||||
if not exist "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\e_os.h" xcopy "$(ProjectDir)\include\*.*" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\" /C /Y /S
|
||||
</Command>
|
||||
</PreBuildEvent>
|
||||
@@ -185,10 +185,10 @@ if not exist "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\e_os.h" xcopy "$
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<PreBuildEvent>
|
||||
<Command>copy /Y $(ProjectDir)opensslconf.h $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\opensslconf.h
|
||||
copy /Y $(ProjectDir)applink.c $(ProjectDir)..\..\openssl-1.0.0a\include\openssl\applink.c
|
||||
copy /Y $(ProjectDir)buildinf.h $(ProjectDir)..\..\openssl-1.0.0a\crypto\buildinf.h
|
||||
copy /Y $(ProjectDir)libeay32.def $(ProjectDir)..\..\openssl-1.0.0a\libeay32.def
|
||||
<Command>copy /Y "$(ProjectDir)opensslconf.h" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\opensslconf.h"
|
||||
copy /Y "$(ProjectDir)applink.c" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\applink.c"
|
||||
copy /Y "$(ProjectDir)buildinf.h" "$(ProjectDir)..\..\openssl-1.0.0a\crypto\buildinf.h"
|
||||
copy /Y "$(ProjectDir)libeay32.def" "$(ProjectDir)..\..\openssl-1.0.0a\libeay32.def"
|
||||
if not exist "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\e_os.h" xcopy "$(ProjectDir)\include\*.*" "$(ProjectDir)..\..\openssl-1.0.0a\include\openssl\" /C /Y /S
|
||||
</Command>
|
||||
</PreBuildEvent>
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="copy /Y $(ProjectDir)ssleay32.def $(ProjectDir)..\..\openssl-1.0.0a\ssleay32.def"
|
||||
CommandLine="copy /Y "$(ProjectDir)ssleay32.def" "$(ProjectDir)..\..\openssl-1.0.0a\ssleay32.def""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
@@ -108,7 +108,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="copy /Y $(ProjectDir)ssleay32.def $(ProjectDir)..\..\openssl-1.0.0a\ssleay32.def"
|
||||
CommandLine="copy /Y "$(ProjectDir)ssleay32.def" "$(ProjectDir)..\..\openssl-1.0.0a\ssleay32.def""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
@@ -188,7 +188,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="copy /Y $(ProjectDir)ssleay32.def $(ProjectDir)..\..\openssl-1.0.0a\ssleay32.def"
|
||||
CommandLine="copy /Y "$(ProjectDir)ssleay32.def" "$(ProjectDir)..\..\openssl-1.0.0a\ssleay32.def""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
@@ -268,7 +268,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="copy /Y $(ProjectDir)ssleay32.def $(ProjectDir)..\..\openssl-1.0.0a\ssleay32.def"
|
||||
CommandLine="copy /Y "$(ProjectDir)ssleay32.def" "$(ProjectDir)..\..\openssl-1.0.0a\ssleay32.def""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<PreBuildEvent>
|
||||
<Command>copy /Y $(ProjectDir)ssleay32.def $(ProjectDir)..\..\openssl-1.0.0a\ssleay32.def</Command>
|
||||
<Command>copy /Y "$(ProjectDir)ssleay32.def" "$(ProjectDir)..\..\openssl-1.0.0a\ssleay32.def"</Command>
|
||||
</PreBuildEvent>
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/Gs0 %(AdditionalOptions)</AdditionalOptions>
|
||||
@@ -107,7 +107,7 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<PreBuildEvent>
|
||||
<Command>copy /Y $(ProjectDir)ssleay32.def $(ProjectDir)..\..\openssl-1.0.0a\ssleay32.def</Command>
|
||||
<Command>copy /Y "$(ProjectDir)ssleay32.def" "$(ProjectDir)..\..\openssl-1.0.0a\ssleay32.def"</Command>
|
||||
</PreBuildEvent>
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/Gs0 %(AdditionalOptions)</AdditionalOptions>
|
||||
@@ -134,7 +134,7 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<PreBuildEvent>
|
||||
<Command>copy /Y $(ProjectDir)ssleay32.def $(ProjectDir)..\..\openssl-1.0.0a\ssleay32.def</Command>
|
||||
<Command>copy /Y "$(ProjectDir)ssleay32.def" "$(ProjectDir)..\..\openssl-1.0.0a\ssleay32.def"</Command>
|
||||
</PreBuildEvent>
|
||||
<Midl>
|
||||
<TargetEnvironment>X64</TargetEnvironment>
|
||||
@@ -164,7 +164,7 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<PreBuildEvent>
|
||||
<Command>copy /Y $(ProjectDir)ssleay32.def $(ProjectDir)..\..\openssl-1.0.0a\ssleay32.def</Command>
|
||||
<Command>copy /Y "$(ProjectDir)ssleay32.def" "$(ProjectDir)..\..\openssl-1.0.0a\ssleay32.def"</Command>
|
||||
</PreBuildEvent>
|
||||
<Midl>
|
||||
<TargetEnvironment>X64</TargetEnvironment>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user