Andreas Eversberg [Tue, 4 Dec 2012 15:43:12 +0000 (16:43 +0100)]
chan_lcr: Replaced 'n' (no DTMF) option with 'D' (DTMF)
The option 'n' was actually broken. Now it is replaced, because
generated DTMF tones may cause delay to SIP connections.
Andreas Eversberg [Tue, 4 Dec 2012 14:41:23 +0000 (15:41 +0100)]
Fixed early audio with chan_lcr (Asterisk)
If progress message is received, go into proceeding state.
Send audio, if proceeding/alerting state, so RTP stream is sent in both
directions. This is essential when using NAT.
Andreas Eversberg [Tue, 4 Dec 2012 14:38:25 +0000 (15:38 +0100)]
Fixed version issue of chan_lcr
Andreas Eversberg [Wed, 14 Nov 2012 09:42:55 +0000 (10:42 +0100)]
Updated MNCC interface
The structure of BEARER CAPABILITY has been expanded.
Andreas Eversberg [Tue, 13 Nov 2012 07:42:31 +0000 (08:42 +0100)]
SIP: Allow early audio on incomming connections at SIP interface
In order to provide internal tones, a clock is used to generate
chunks of 160 samples. If no tones are provided and if audio is
bridged, it is forwarded as usual.
In order to provide early audio on SIP trunk, "tones yes" must be set
at interface.conf.
In order to receive early audio from SIP trunk, "earlyb yes" must be
set at interface.conf.
Andreas Eversberg [Mon, 12 Nov 2012 11:20:27 +0000 (12:20 +0100)]
Fix: Set correct local RTP port
Andreas Eversberg [Tue, 21 Aug 2012 08:34:15 +0000 (10:34 +0200)]
Fix: Allow recording of audio for SIP/remote/GSM interfaces too
Andreas Eversberg [Tue, 21 Aug 2012 07:44:33 +0000 (09:44 +0200)]
Fix: Track notification messages at partyline too
This is required, so inactive parties will be marked as beeing "on hold".
These parties will be removed from the bridge, so the partyline is not
disturbed by hold music comming from inactive parties.
Thanx to Atul for pointing to this bug.
Andreas Eversberg [Tue, 21 Aug 2012 07:43:50 +0000 (09:43 +0200)]
Removed obsolete logging code
Andreas Eversberg [Tue, 21 Aug 2012 06:50:35 +0000 (08:50 +0200)]
Fix: Don't forward MESSAGE_TRAFFIC to endpoint instance
Thanx to Atul for catching this bug
Birger Harzenetter [Tue, 21 Aug 2012 06:44:34 +0000 (08:44 +0200)]
Fix: Append information (overlap dialing) to Asterisk's extension string
Signed-off-by: Andreas Eversberg <jolly@eversberg.eu>
Andreas Eversberg [Tue, 21 Aug 2012 06:36:33 +0000 (08:36 +0200)]
Store caller/dialing info for calls via remote interfaces (chan_lcr)
Andreas Eversberg [Tue, 21 Aug 2012 06:23:19 +0000 (08:23 +0200)]
Fix: Polling of file descriptors
It is only done when enabled by config or when any SIP interface is
created.
Thanx to Wimpy for catching this bug.
Andreas Eversberg [Tue, 21 Aug 2012 06:07:45 +0000 (08:07 +0200)]
Fix: chan_lcr must use right context attribute for Asterisk version >= 11
Andreas Eversberg [Mon, 20 Aug 2012 06:56:39 +0000 (08:56 +0200)]
Fix: Bind RTP/RTCP socket pairs correctly
Andreas Eversberg [Sun, 19 Aug 2012 15:06:45 +0000 (17:06 +0200)]
Fix: Always keep transmit timer on when mISDN channel is open
This way the buffer load is always calculated correctly.
Andreas Eversberg [Sun, 19 Aug 2012 10:33:54 +0000 (12:33 +0200)]
Fix: Encoding of 3PTY result facility IE
Andreas Eversberg [Sun, 19 Aug 2012 09:11:59 +0000 (11:11 +0200)]
Fix: Send tones/patterns/announcements for remote connections
Andreas Eversberg [Sun, 19 Aug 2012 08:24:39 +0000 (10:24 +0200)]
Add screening of caller ID for remote (asterisk) connections
Andreas Eversberg [Sun, 19 Aug 2012 07:42:43 +0000 (09:42 +0200)]
Cleanup: Make interface name be part of Port class
Andreas Eversberg [Sun, 19 Aug 2012 06:36:45 +0000 (08:36 +0200)]
chan_lcr: Select remote interface by chan_lcr
Usage: Dial(LCR/<interface>/<digits>/<options>)
The interface must match the interface name in interface.conf. If omitted,
the first remote interface is used.
Example:
Dial(LCR/ast/123) will send a call to LCR and select remote interface
'ast'.
Dial(LCR//123) will send a call to LCR and select the first remote
interface.
Now it is possible to have multiple remote interfaces.
Andreas Eversberg [Sun, 19 Aug 2012 06:35:55 +0000 (08:35 +0200)]
Fix: Match complete string when filtering for interface
Andreas Eversberg [Sun, 19 Aug 2012 06:34:32 +0000 (08:34 +0200)]
Display source and destination interface at endpoint logging
Andreas Eversberg [Sat, 18 Aug 2012 08:10:08 +0000 (10:10 +0200)]
Fix: Prevent Asterisk from aborting when delivering ast_frames
Andreas Eversberg [Sat, 18 Aug 2012 06:55:01 +0000 (08:55 +0200)]
Fix: LCR's DTMF detection will be enabled and used by default
Using 'n' option will disable it
Using 'a' option will disable it and use Asterisk's DTMF detection instead.
Andreas Eversberg [Sat, 18 Aug 2012 06:19:42 +0000 (08:19 +0200)]
Fix: Asterisk DTMF detection works now
To enable, use option "a".
-> for calls from LCR use lcr_config(a) in extensions.conf
-> for calls to LCR use Dial(LCR/pbx/<number>/a)
Andreas Eversberg [Thu, 16 Aug 2012 06:22:32 +0000 (08:22 +0200)]
Fix: chan_lcr will suppress audio traffic until ref is received
If no ref is received from LCR, the traffic may not be sent to LCR.
Andreas Eversberg [Thu, 16 Aug 2012 06:21:43 +0000 (08:21 +0200)]
chan_lcr: Disabled bridge, because there is no concept right now.
Andreas Eversberg [Fri, 10 Aug 2012 07:58:36 +0000 (09:58 +0200)]
Removed obsolete definition of media_type2name() from sip.h
Andreas Eversberg [Wed, 8 Aug 2012 15:55:27 +0000 (17:55 +0200)]
Fixed broken chan_lcr of last commit
Andreas Eversberg [Wed, 8 Aug 2012 07:20:02 +0000 (09:20 +0200)]
Fixed compiling of chan_lcr with Asterisk 1.6.2.2
Andreas Eversberg [Wed, 8 Aug 2012 07:19:00 +0000 (09:19 +0200)]
Fix: Process tx-load when briding with jitter buffer disabled
Andreas Eversberg [Thu, 2 Aug 2012 12:44:19 +0000 (14:44 +0200)]
Updated default config examples
Andreas Eversberg [Mon, 30 Jul 2012 20:17:39 +0000 (22:17 +0200)]
Fixed parsing capability conditions
Andreas Eversberg [Sun, 29 Jul 2012 12:33:15 +0000 (14:33 +0200)]
Define prload of mISDN buffer by chan_lcr (required for fax)
Use q<ms> option to peload.
Andreas Eversberg [Sun, 29 Jul 2012 10:49:08 +0000 (12:49 +0200)]
Bump version to 1.13
Andreas Eversberg [Sun, 29 Jul 2012 10:39:09 +0000 (12:39 +0200)]
Maintain states for remote socket connections
Andreas Eversberg [Sun, 29 Jul 2012 10:18:02 +0000 (12:18 +0200)]
Implement 3PTY bridge of two 'join's.
Andreas Eversberg [Sat, 28 Jul 2012 14:24:06 +0000 (16:24 +0200)]
Add 3PTY facility to invoke conference call via functional protocol
Andreas Eversberg [Sat, 28 Jul 2012 14:04:58 +0000 (16:04 +0200)]
Don't remove lock, if other LCR is using it
Andreas Eversberg [Sat, 28 Jul 2012 09:16:42 +0000 (11:16 +0200)]
Add conference mixing to LCR's internal bridge
Bride allow now to forward between two paries or mix between three to N
parties.
Andreas Eversberg [Sat, 28 Jul 2012 09:15:30 +0000 (11:15 +0200)]
Add global variable for Law encoded silence
Andreas Eversberg [Sat, 28 Jul 2012 06:21:47 +0000 (08:21 +0200)]
Changed bridge structure to hold 1..n members instead of only 1..2
Andreas Eversberg [Fri, 27 Jul 2012 15:20:43 +0000 (17:20 +0200)]
Removed complete bchannel handling from chan_lcr
The remote application interface does not allow any bchannel to be
exported or imported. Audio traffic via socket interface is used instead.
The joinremote instance became obsolete and is removed.
The remote action (routing) became obsolete, use interface.conf instead.
The handling of loopback device became obsolete and was removed
The chan_lcr does not rely on mISDN anymore, that means:
- can be used with GSM and without mISDN at all.
- chan_lcr can be used as internal extension of LCR (e.g. SIP phone)
(chan_lcr can be handled as any other interface)
- no loopback device to be used anymore.
Andreas Eversberg [Sun, 19 Aug 2012 18:50:10 +0000 (20:50 +0200)]
Allow calls to multiple interfaces simultaniosuly
For external calls, the list of interfaces is used to select the first
available/not busy interface. If the interface list is stated with +,
the call is forked to all interfaces.
Andreas Eversberg [Fri, 27 Jul 2012 07:07:35 +0000 (09:07 +0200)]
Fix: Make GSM BS compile without SIP support
Janis Ruksans [Sat, 30 Jun 2012 12:04:23 +0000 (14:04 +0200)]
List files for dist that are not picked up automatically from build
rules; and filter out unnecessary ones for distuninstallcheck.
Signed-off-by: Andreas Eversberg <jolly@eversberg.eu>
Janis Ruksans [Sat, 30 Jun 2012 12:03:32 +0000 (14:03 +0200)]
Reference the sources via $< for chan_lcr, and prefixing with $(srcdir)
otherwise. Note: Autoconf manual says that using $< in ordinary make
rules is not portable, but LCR is Linux specific anyway.
Signed-off-by: Andreas Eversberg <jolly@eversberg.eu>
Janis Ruksans [Sat, 30 Jun 2012 12:02:19 +0000 (14:02 +0200)]
Use variables set by configure script instead of installing files to a
hardcoded location. This is practically the same as the reverted part of
commit
51655a18 except that $(DESTDIR) *is not* prepended to CC defines;
doing so would break staged installs.
Signed-off-by: Andreas Eversberg <jolly@eversberg.eu>
Janis Ruksans [Thu, 28 Jun 2012 06:11:57 +0000 (08:11 +0200)]
On many systems /var/run is not world-writeable, and writing PID fails
if LCR is not being run as root. The lock directory, on the contrary,
must be writable by the lcr process, and can be configured by the user.
Signed-off-by: Andreas Eversberg <jolly@eversberg.eu>
Janis Ruksans [Thu, 28 Jun 2012 06:06:15 +0000 (08:06 +0200)]
Use loops for str* checks and to install configuration and tone files,
with the actual files listed in make variables.
Signed-off-by: Andreas Eversberg <jolly@eversberg.eu>
Janis Ruksans [Thu, 28 Jun 2012 06:02:55 +0000 (08:02 +0200)]
The third parameter to ast_channel_tech.requester is const qualified,
causing GCC to emit a warning about incompatible pointer types when
initializing lcr_tech. Fix this by adding necessary const's to lcr_request.
Signed-off-by: Andreas Eversberg <jolly@eversberg.eu>
Janis Ruksans [Thu, 28 Jun 2012 06:01:25 +0000 (08:01 +0200)]
If ast_channel struct is not declared before ast_register_application2,
gcc thinks that the implicit declaration in module.h is different from
the one in channel.h, and issues a warning about incompatible pointer
types. A forward declaration before including module.h fixes this.
Due to some brain-deadness in Ast, including channel.h before module.h
causes the compilation fail altogether.
Signed-off-by: Andreas Eversberg <jolly@eversberg.eu>
Janis Ruksans [Thu, 28 Jun 2012 05:59:48 +0000 (07:59 +0200)]
Use AC_CHECK_TYPE and correct quoting for Asterisk struct checks, and add
case for ind_tone_zone_sound (Asterisk 1.6.0).
Signed-off-by: Andreas Eversberg <jolly@eversberg.eu>
Birger Harzenetter [Sun, 24 Jun 2012 06:33:59 +0000 (08:33 +0200)]
Changes needed for Asterisk TRUNK 357721
Birger Harzenetter [Sun, 17 Jun 2012 07:35:30 +0000 (09:35 +0200)]
Fixed typo
Birger Harzenetter [Sat, 16 Jun 2012 07:52:48 +0000 (09:52 +0200)]
Adds screening of redirecting number
Andreas Eversberg [Sun, 20 May 2012 15:45:56 +0000 (17:45 +0200)]
[SIP] Allow setting local port for SIP interface
Andreas Eversberg [Sun, 20 May 2012 14:37:27 +0000 (16:37 +0200)]
Only receive RTP audio data, if connected to remote.
Andreas Eversberg [Sun, 20 May 2012 14:36:06 +0000 (16:36 +0200)]
Fixed reloading of interfaces with SIP support
SIP instance is now moved to new interface list at is should be.
Birger Harzenetter [Tue, 17 Apr 2012 10:56:49 +0000 (12:56 +0200)]
Changes for Asterisk TRUNK r357721
Signed-off-by: Andreas Eversberg <jolly@eversberg.eu>
Andreas Eversberg [Sun, 25 Mar 2012 14:41:14 +0000 (16:41 +0200)]
Fixed compiling issues when enabling GSM MS side support.
Andreas Eversberg [Sun, 25 Mar 2012 14:40:24 +0000 (16:40 +0200)]
Allow to define MS side GSM interface again
Andreas Eversberg [Sun, 25 Mar 2012 14:38:43 +0000 (16:38 +0200)]
Bearer Capability is mandatory in CALL CONF. message, if not in SETUP.
Andreas Eversberg [Sun, 25 Mar 2012 14:36:19 +0000 (16:36 +0200)]
When socket to LCR is closed, the test call must be released
Andreas Eversberg [Fri, 16 Mar 2012 03:58:23 +0000 (04:58 +0100)]
SIP: Adding echo test to do delay test on incomming SIP calls
Andreas Eversberg [Thu, 8 Mar 2012 13:44:17 +0000 (14:44 +0100)]
Added support for all GSM codecs to GSM and SIP interface
Untested!
Andreas Eversberg [Thu, 8 Mar 2012 06:05:15 +0000 (07:05 +0100)]
Removed obsolete #include directive.
Birger Harzenetter [Thu, 1 Mar 2012 07:47:13 +0000 (08:47 +0100)]
Make chan_lcr compile with latest Asterisk.
Andreas Eversberg [Thu, 1 Mar 2012 07:40:28 +0000 (08:40 +0100)]
Fixed chan_lcr unload bug, found by Patrick
Alexander Huemer [Thu, 1 Mar 2012 06:51:26 +0000 (07:51 +0100)]
Make appbridge.cpp compile, even without mISDN support.
Andreas Eversberg [Tue, 21 Feb 2012 17:03:43 +0000 (18:03 +0100)]
Fixed release of relations between bridge and interface instances (ports)
Wimpy [Tue, 21 Feb 2012 10:42:20 +0000 (11:42 +0100)]
Added support to chan_lcr for Asterisk version > 10
Andreas Eversberg [Tue, 21 Feb 2012 10:32:31 +0000 (11:32 +0100)]
Added support of mISDN to direct bridge feature
Now it is possible to directly bridge:
- GSM with SIP
- GSM with ISDN
- SIP with ISDN
Andreas Eversberg [Sat, 18 Feb 2012 08:50:43 +0000 (09:50 +0100)]
Allow setting IP:port for peers of SIP interfaces.
Andreas Eversberg [Sat, 18 Feb 2012 08:49:57 +0000 (09:49 +0100)]
Use dynamic RTP payload types starting from 96
Andreas Eversberg [Fri, 17 Feb 2012 14:38:54 +0000 (15:38 +0100)]
Allow dynamic RTP payload types when bridging between SIP and OpenBSC.
Because EFR/AMR/HR codecs use dynamic RTP payload types, it is essential
to forward the actual media types between endpoints too. These media
types are used for negotiation of codecs. A dynamic payload type is
used as given by remote peer. Locally generated payload types are used
when offering codecs to remote peer.
Andreas Eversberg [Fri, 17 Feb 2012 11:31:54 +0000 (12:31 +0100)]
SIP: minor fixes
Andreas Eversberg [Sun, 5 Feb 2012 19:30:48 +0000 (20:30 +0100)]
Bump version to 1.12
Andreas Eversberg [Sat, 4 Feb 2012 06:43:36 +0000 (07:43 +0100)]
autoconf: Fixed detection of mISDN headers
Andreas Eversberg [Wed, 1 Feb 2012 16:52:36 +0000 (17:52 +0100)]
Adding negotiation of speech codecs between GSM and SIP when using rtp-bridge
Since LCR does not put hands on any RTP frame when directly bridged between
OpenBSC and SIP, it will now allow all speech codecs that are commonly supported
by MS and remote SIP endpoint.
It must be noted that OpenBSC must support forwarding the codec types that
MS and remote SIP endpoints support.
Currently LCR negotiates the following codecs for GSM:
- Full Rate
- EFR
- AMR
- Half Rate
Andreas Eversberg [Fri, 27 Jan 2012 07:35:55 +0000 (08:35 +0100)]
Disabled NUTAG_AUTO100, Entering PROCEEDING state after sending INVITE
This also includes unfinished overlap dialing code.
Andreas Eversberg [Fri, 27 Jan 2012 06:27:52 +0000 (07:27 +0100)]
Adding switch to compile LCR without mISDN support
Disable:
--without-misdn
Enable:
--with-misdn
Otherwise it will be enable automatically, if mISDN user is installed.
Andreas Eversberg [Sat, 21 Jan 2012 16:50:45 +0000 (17:50 +0100)]
GSM now receives tones during bridge
If a bridge is enabled, tones (e.g. hangup tone) will have priority
over the bridge. The bridge will continue to forward audio, after
tone is removed. (e.g after beeing on hold music)
Andreas Eversberg [Fri, 20 Jan 2012 19:28:55 +0000 (20:28 +0100)]
Adding handling of bad GSM audio frames
In this case the frame is dropped, but audio of the last frame is repeated
with a reduced level. The level is reduced again an again until a new
valid frame is received. This way there is no silent gap in the audio
stream.
Andreas Eversberg [Fri, 20 Jan 2012 09:05:41 +0000 (10:05 +0100)]
Fixed dead pointer problem when handling interfaces
In order to get the pointer to the currently existing interface, a
new function is used, to resolve interface by name.
Andreas Eversberg [Fri, 20 Jan 2012 09:05:17 +0000 (10:05 +0100)]
Minor fix in interface.conf example
Andreas Eversberg [Fri, 20 Jan 2012 07:58:27 +0000 (08:58 +0100)]
Adding TX-dejitter feature for briged data to mISDN
In case there is data bridged to an mISDN port, the TX-dejitter feature
is enabled in the kernel, to keep the delay at a minimum.
Andreas Eversberg [Fri, 20 Jan 2012 07:56:51 +0000 (08:56 +0100)]
Correctly control brige in case of mISDN
If all ends in a call use mISDN, the bridging is done by mISDN itself.
If one end of a call is not mISDN and there are two parties, the
traffic is bridged via LCR.
Andreas Eversberg [Thu, 19 Jan 2012 08:44:48 +0000 (09:44 +0100)]
Fixed audio bridge to mISDN ports
Audio must be bridged, even if the call is not connected, but if
audio data is already available.
Andreas Eversberg [Thu, 19 Jan 2012 08:14:58 +0000 (09:14 +0100)]
Fixed 'earlyb' handling
mISDN-TE ports receive audio patterns by default again.
Andreas Eversberg [Mon, 16 Jan 2012 08:14:22 +0000 (09:14 +0100)]
Adding simple bridge application to forward calls without PBX app.
Call received on an interface can directly be forwarded to a given
destination interface, instead of routing the call through PBX
application. This way calls can be forwarded without going through
route.conf.
Currently only SIP and GSM destinations are supported. Also there
are no tones generated, if one side provides no tones, but the
other wants to receive them.
The keyword "bridge <output interface>" in interface.conf is used.
Without that keyword, incomming calls are handled as usual.
Andreas Eversberg [Sun, 15 Jan 2012 09:51:58 +0000 (10:51 +0100)]
Forward DTMF as message directly from GSM BS to SIP.
In case rtp-bridge is used, tones cannot be generated. Instead,
a message is forwarded to SIP endpoint, so it generates it itself.
Andreas Eversberg [Sun, 15 Jan 2012 08:42:35 +0000 (09:42 +0100)]
Added bridgin support for GSM and SIP
The dependency on mISDN (loopback interface) is completely removed
from GSM and SIP interfaces.
The built in bridge of LCR now forwards audio data between these
interface instances or between these instances and other instances.
Additionally both GSM BS and SIP support direct forwarding of RTP
traffic between other SIP endpoint and OpenBSC, so no traffic is
forwarded by the LCR itself. This is done by forwarding RTP peer
informations between these interface instances.
Andreas Eversberg [Sat, 14 Jan 2012 17:36:26 +0000 (18:36 +0100)]
Adding bridge between protocol handlers (ports)
This is required to bridge traffic beween non-mISDN handlers,
such as GSM, SIP and voice box. Also it bridges traffic between
mISDN handlers and non-mISDN handlers. It is the fundamental step
to get rid of mISDN (loop interface) for non-mISDN handlers.
This is required to bridge audio e.g. between SIP and GSM without
using mISDN. There will be no limitations on 'b-channels' anymore.
Still GSM and SIP requires mISDN, but this will be changed later.
With that bridge I cleaned up some code and also removed the
MESSAGE_DATA, which is not required anymore.
Andreas Eversberg [Fri, 13 Jan 2012 05:24:21 +0000 (06:24 +0100)]
Adding basic SIP support, using Sofia-SIP stack
This support is just a simple peer-to-peer support for basic calls.
Currently it requires mISDN_l1loop interface, as every non-ISDN
interface does. Later it will be possible to use it without.
Andreas Eversberg [Fri, 13 Jan 2012 04:18:49 +0000 (05:18 +0100)]
Various minor fixes
Andreas Eversberg [Fri, 13 Jan 2012 04:13:30 +0000 (05:13 +0100)]
Adding shutdown option to interface.conf
This way an interface can be disabled by just one keyword
and not by uncommenting all lines of it.
Andreas Eversberg [Sat, 7 Jan 2012 08:34:51 +0000 (09:34 +0100)]
Fixed NULL-pointer bug when unloading of GSM interfaces
Andreas Eversberg [Tue, 3 Jan 2012 10:29:43 +0000 (11:29 +0100)]
chan_lcr: Minor fix for Asterisk versions >= 10
subclass.codec or subclass is not part of frame anymore.