Commit Graph

2049 Commits

Author SHA1 Message Date
Moises Silva 4b22c22c33 freetdm: fix potential bug in MFCR2 where the channel token is cleared too soon 2011-12-15 20:29:32 -05:00
Jeff Lenk f5abef2000 FS-3728 --resolve thanks 2011-11-30 08:57:11 -06:00
Stefan Knoblich 2de175b574 ftmod_libpri: Improve output of ftdm libpri api 'invalid span' error messages.
No more "invalid span", now it's either "'foo' not a libpri span" or
"'foo' span not found" which makes it a lot more useful.

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2011-11-18 23:58:01 +01:00
Stefan Knoblich 5897ec5992 ftmod_libpri: Print usage if 'ftdm libpri' has no arguments.
Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2011-11-18 23:58:00 +01:00
Michael Jerris 4936b11cc8 remove log message being sent 100s of times a second until someone can figure out what is causing it 2011-11-10 22:59:43 -05:00
Michael Jerris 2be49bdf79 remove log message being sent 100s of times a second until someone can figure out what is causing it 2011-11-10 22:11:42 -05:00
Moises Silva b9ad924e83 freetdm: ftmod_zt - Fix references to ftdmtel that should be Zaptel/DAHDI (screwed up during OpenZAP -> FreeTDM renaming) 2011-11-10 15:16:07 -05:00
Moises Silva 0153f603cb freetdm: fix pri tap progress event handling 2011-11-09 11:16:58 -05:00
David Yat Sin 8558ec9f0a Added support for freetdm_isdn.send_cid_name 2011-11-09 11:01:32 -05:00
David Yat Sin 3ecddde752 Support for sending Caller ID Name on 4ESS/5ESS 2011-11-03 19:37:05 -04:00
Stefan Knoblich 91ef437bd5 FreeTDM: Add ax_compiler_vendor.m4 to acinclude.m4
This fixes a "AX_COMPILER_VENDOR: command not found" error on
systems with older autotools versions (CentOS 5.x in this case).

Not a problem on newer auto* toolchains, they either ignore
acinclude.m4 completely or handle it in a different way.

(In fact, acinclude.m4 is not even needed for the one on CentOS 5,
 but we'll keep it for now.)

Tested-on: CentOS 5.7 x86_64 autoconf 2.59 / automake 1.9.6 / libtool 1.5.22
Tested-on: Gentoo 20111031 x86_64 autoconf 2.68 / automake 1.11 / libtool 2.4
Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2011-11-01 15:37:51 +01:00
David Yat Sin 5ee015610c freetdm: Added some code to differentiate between wanpipe_wait returning FTDM_TIMEOUT and FTDM_FAIL on transmit 2011-10-31 10:25:07 -04:00
Marc Olivier Chouinard d185978f8d mod_freetdm/libpri: Fix problem with some destination using early-media for IVR. FS wasn't switching to accept the media of the early media provided in some type of ISDN msg. This fix it for the situation I've experienced. 2011-10-28 15:18:58 -04:00
Stefan Knoblich ec72d8d7fc FreeTDM: Rework libpri detection code to accept a custom installation prefix.
Example: --with-libpri=/usr/local

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2011-10-26 19:41:07 +02:00
Jeff Lenk f0efbd3f08 FS-3599 --resolve correct windows compiler warnings 2011-10-07 08:38:48 -05:00
Stefan Knoblich 5a96ebdaa3 FreeTDM: Escape $(srcdir) in configure.ac variable
Silencing a "configure:xxxx: srcdir: command not found" error message.

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2011-10-06 11:08:42 +02:00
Stefan Knoblich 7f17ad7f92 ftmod_misdn: Change last commit to set -D_GNU_SOURCE instead.
This fixes all build errors.
(Stand-alone build of FreeTDM worked fine, for some
 i-don't-really-want-to-know strange reason).

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2011-10-01 14:05:14 +02:00
Stefan Knoblich 473aab18eb ftmod_misdn: Add -D_BSD_SOURCE to get u_int and friends.
Needed for the mISDN/mISDNif.h header structs, linux/types.h only
provides them for kernel code:

In file included from src/ftmod/ftmod_misdn/ftmod_misdn.c:51:
/usr/include/mISDN/mISDNif.h:296: error: expected specifier-qualifier-list before 'u_int'
/usr/include/mISDN/mISDNif.h:306: error: expected specifier-qualifier-list before 'u_int'
/usr/include/mISDN/mISDNif.h:339: error: expected ')' before 'nr'
...

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2011-10-01 13:31:16 +02:00
David Yat Sin 8df1872fbe freetdm:Support for transmission of Caller ID Name on NI-2 2011-09-19 13:51:41 -04:00
Anthony Minessale 2ad4f00c9f add missing break on begin detect 2011-09-19 08:08:55 -05:00
Stefan Knoblich 975ac0ac70 FreeTDM: Fix private/libteletone*.h includes
libteletone headers include each other, use #include ""
to look in the local dir rather than the include search path.

Unbreaking all of my (still) external FreeTDM projects.

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2011-09-19 15:55:07 +02:00
Anthony Minessale 379c9fc41d fix messup in dtmf change 2011-09-16 17:23:15 -05:00
Anthony Minessale f7b40140bb fix messup in dtmf change 2011-09-16 17:07:48 -05:00
Anthony Minessale 995d7dcb02 dont clear token on SIGEVENT_STOP for ISDN legs, save it for the hangup handler 2011-09-16 16:44:15 -05:00
Anthony Minessale 42ff14d22a use index in this loop instead of the max val for the iteration 2011-09-16 15:53:49 -05:00
Anthony Minessale 8a3c292534 fix seg in recent change 2011-09-16 14:52:14 -05:00
Anthony Minessale dbd5d2575e fix build on freetdm 2011-09-16 14:50:46 -05:00
Anthony Minessale 44822df63d we need to fix this build system it masks errors 2011-09-16 12:13:25 -05:00
Anthony Minessale a65794fb5e FS-3570 receive side, update libteletone to track duration so it is less likely to double detect and push api changes down to freetdm 2011-09-16 10:06:04 -05:00
Moises Silva 25417d3ea8 freetdm: Verify that the uuid that is being hung up is still attached to the FreeTDM device
This avoids hanging up a device that is no longer attached to the session, in the
         weird situation where the FreeSWITCH core takes an awful lot of time (more than 3 seconds)
         to come around to acknowledge the SIGEVENT_STOP signal.
2011-09-15 19:42:39 -04:00
Moises Silva aa0a6c9222 freetdm: print span/chan identifiers on hangup 2011-09-15 13:50:42 -04:00
Moises Silva b06f58a14b freetdm: do not warn on io status changes, leave as debug messages 2011-09-14 10:46:32 -04:00
Moises Silva 4ed900eb92 freetdm: add debug stacktrace to track spurious channel_on_hangup call 2011-09-12 18:13:10 -04:00
Moises Silva 23aba09f1b freetdm: mod_freetdm - fix len data type for 64bit systems 2011-09-12 15:48:28 -04:00
Moises Silva 4cdf9f2491 freetdm: ftmod_wanpipe - Added misc IO debugging code (define WP_DEBUG_IO to use) 2011-09-12 15:23:21 -04:00
Moises Silva 6c5132a507 freetdm: - Clear the IO flag when FreeSWITCH hangs up before notifying freetdm
- Misc fixes to log messages to aid debugging
         - Added ftdm ioread command to read media from the channel
         - Modified the ftdm_channel_open() API to return FTDM_EBUSY if the channel is already open
2011-09-12 15:21:23 -04:00
Stefan Knoblich f4facb0f65 [FreeTDM] Add missing newline in "Failed to configure span" error message in ftdm_configure_span_channels().
Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2011-09-12 13:07:50 +02:00
Moises Silva fb69d37592 freetdm: fix small bug reported in freeswitch-dev where the call_id member of sigmsg
is not being set for SIGEVENT_START event
2011-09-08 12:51:48 -04:00
Stefan Knoblich 09a61f5025 [FreeTDM] Add (experimental) ftmod_misdn
Add I/O plugin for mISDN stack that is included in the linux kernel
since version 2.6.27.

The in-kernel mISDN stack uses a socket based interface (AF_ISDN),
data and control commands are exchanged via datagram messages.

This makes writing a driver that doesn't use a separate (per-span)
thread to handle all incoming events a bit tricky, because responses
to control messages and incoming data are mixed and interfacing
with the synchronous FreeTDM I/O API is problematic.

B(*)/D-channel handling:

The current version uses misdn_wait() to poll() for activity on
the non-blocking channel sockets and misdn_read() to receive and
handle all pending events up to the first PH_DATA_IND (data) message
(which is what the caller of the read method is actually after).

In case no data has been received, misdn_read() returns FTDM_SUCCESS
with *datalen = 0, which is OK for all the signalling modules tested
(ftmod_libpri and (out-of-tree) ftmod_isdn).

To send data, misdn_write() is called, which just sends a PH_DATA_REQ
message to the mISDN channel socket.

(*) B-channels use a per-channel timerfd as a timing reference for
'ready-for-write' poll()ing in misdn_wait().

This is a workaround for a limitation of mISDN sockets, which do not
support POLLOUT waiting on b-channel sockets (in a useful way).

Sending/receiving of data works the same way as on d-channels, otherwise.

The module has received some minimal testing using a beronet
single-port HFC E1 and a HFC4-S quad-port BRI card on linux-3.0.x.

--- Limitations ---

 - Only the most basic features have been implemented (alarms,
   sending/receiving data/audio).

 - Spans are limited to E1 and BRI/BRI_PTMP trunk types.

 - D-Channels only work on 16 for PRI and 3 for BRI.

 - NT/TE mode information is not available from freetdm.conf /
   at configure_span()-time so the module assumes TE mode,
   which should be only a problem for cards that can change
   the port configuration (pin-out) from software.

 - Current design (b-channel timerfd / misdn_wait()/_read()/_write())
   should be fine for most SoHo use-cases
   (scalability / cpu usage / timing precision).

--- Requirements ---

 - mISDNif.h header (/usr/include/mISDN/mISDNif.h), provided by mISDNuser
   (http://isdn.eversberg.eu/download/lcr-1.7/mISDNuser-20100525.tar.gz).

 - Linux kernel with mISDN and timerfd enabled (>= 2.6.27)
   and libc with timerfd support.

mISDN options can be found in the:

"Device Drivers" -> "ISDN support" -> "Modular ISDN driver"

section of make menuconfig. Timerfd is usually enabled by default.

The FreeTDM configure script will check for missing mISDNif.h
header and timerfd support and print a message.

You should see the following in the summary screen on success:

	ftmod_misdn........................ yes

NOTE: Forcing mISDN support using the "--with-misdn" configure option,
      will cause the configure script to fail on the first missing
      dependency.

--- Usage ---

To use the module, make sure you have mISDN support in the kernel
(kernel modules loaded or kernel with built-in mISDN running),
the "misdn_info" application shipped with mISDNuser will output
a list of available mISDN ports on your system, e.g.:

Found 5 ports
  Port  0 'hfc-4s.1-1':      TE/NT-mode BRI S/T (for phone lines & phones)
                              2 B-channels: 1-2
                                B-protocols: RAW HDLC X75slp
  ...

  Port  4 'hfc-e1.2':        TE/NT-mode PRI E1  (for phone lines & E1 devices)
                             30 B-channels: 1-15 17-31
                                B-protocols: RAW HDLC X75slp

NOTE: ftmod_misdn will print an error message if mISDN support is not available,
      or if there are no ports installed.

- Example freetdm.conf settings

[span misdn BRI_1]
trunk_type => BRI_PTMP
b-channel => 0:1,2
d-channel => 0:3

[span misdn PRI_1]
trunk_type => E1
b-channel => hfc-e1.2:1-15,17-31
d-channel => hfc-e1.2:16

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2011-09-08 00:16:02 +02:00
Stefan Knoblich e1a6fd27e0 ftmod_libpri: Always try to close the d-channel to avoid a possible deadlock in case something fails in the I/O module's channel open function.
Signed-off-by: Stefan Knoblich <s.knoblich@axsentis.de>
2011-09-01 01:48:03 +02:00
Stefan Knoblich 41b956fd24 FreeTDM: Don't ftdm_safe_free() span information in ftdm_span_destroy() if span provides a custom span_destroy callback.
Doing so will cause a NULL-deref segfault while removing the current span from the
global hash (cur_span->name == NULL) in ftdm_global_destroy().

Remove all the ftdm_safe_free() calls in the custom callback part of ftdm_span_destroy() and
let ftdm_global_destroy() handle that.

NOTE: Also adds a missing ftdm_safe_free(cur_span->dtmf_hangup) to ftdm_global_destroy().

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2011-09-01 01:48:03 +02:00
Michael Jerris 77284b5d21 use system default dtmf duration instead of hardcoded value 2011-08-31 14:45:16 -04:00
Moises Silva 485cb2f52c freetdm: added documentation regarding ftdm open known issues 2011-08-27 00:19:09 -04:00
Brian West 6a4cf724c8 conf/tones.conf from wiki page why nobody bothered to submit a jira so they would be included instead putting them on the wiki to be overlooked 2011-08-22 19:27:03 -05:00
Moises Silva 46f097c1b9 freetdm: ftmod_wanpipe - tx idle frames needs to be bigger 2011-08-07 01:33:26 -04:00
Moises Silva c6f5c96c6e freetdm: *shrug* 2011-08-06 21:38:04 -04:00
Moises Silva f57c33f1ee OPENZAP-112 --resolve 2011-08-06 21:32:21 -04:00
Marc Olivier Chouinard 2ecf2d6e62 freetdm/libpri: Add support to change status of an individual channel or multiple channel. This allow to put bchannel out of service on an active T1 without affecting active call. Allow graceful out of service of T1 trunk.
NOTE: There is bugs in libpri, even latest 1.4.12 as of this writing if you use NI2.   So rightnow it only work in DMS100/ATT mode.  Email me to get the NI2 patch (really stupid error).
NOTE2: The way libpri is build doesn't allow to do advance feature with the SERVICE feature, so if you put an channel out of service, and the far end send an restart, it will be bring back in service.  Lot of changes in libpri is required to allow this.  I need to figure out what would be the best steps to take since I don't have commit access to libpri release.
NOTE3: You need to enable this feature by setting service_message_support to true on the span
2011-08-05 22:50:58 -04:00
Moises Silva bfabc98f3d freetdm: more CLI improvements 2011-08-04 10:10:13 -04:00
Moises Silva 3b2203b71b freetdm: default iostats to yes and allow configuration thru freetdm.conf 2011-08-03 20:30:39 -04:00