Fixed #932 and #905 in public. OpenBTS now responds negatively to SIP
 re-invites, though the specific effect of this depends on the client
 sending the re-invite. In the case of FS, it causes the RTP stream to
 break. We also now complain when invites time out, sending an alert to the
 user about the proxy status.

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3810 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Fixes #991 in public. We now appropriately handle rejections of our SIP MESSAGE content

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3812 19bc5d8c-e614-43d4-8b26-e1612bc8e597
testing push on new laptop

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3851 19bc5d8c-e614-43d4-8b26-e1612bc8e597
SIP MESSAGES now wait when they receive a 100 TRYING, rather than repeating themselves.

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3856 19bc5d8c-e614-43d4-8b26-e1612bc8e597
removed notice about not caring about 100 trying messages. RFCs be damned, the proxies use them.

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3857 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Simple script for looping the OpenBTS process to catch crashes and restarts.


git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3858 19bc5d8c-e614-43d4-8b26-e1612bc8e597
We no longer repeat INVITEs when we get a 100 TRYING.

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3883 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Public release now works with g++4.7. In 4.7, unistd.h is no longer imported by default

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3918 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Fixed null pointer in MOSMSSubmit.

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3923 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Set state to fail instead of throwing a timeout in MOSMSWaitForSubmit

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3925 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Fixed #40 in public. We now handle CMServiceAbort correctly.

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3973 19bc5d8c-e614-43d4-8b26-e1612bc8e597
transceiver: b100: raise minimum transmit latency value

Put a floor on the transmit latency of the B100 in order to suppress
underruns in typical conditions. Empirical data from a handful of
relatively recent machines shows that the B100 will underrun when
the transmit threshold is reduced to a time of 6 and a half frames,
so we set a minimum 7 frame threshold.

The overall benefit should be marginal and may increase the
possibility of bursts arriving stale (after the trasmit deadline),
but will reduce the number of alarming UHD related messages that
appear in the log file.

This patch is UHD and B100 specific - USRP1 is unaffected.

Signed-off-by: Thomas Tsou <ttsou@vt.edu>

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3980 19bc5d8c-e614-43d4-8b26-e1612bc8e597
transceiver: uhd: allow underrun flag to reset during timing alignment

Allowing the underrun flag to reset will prevent a single event from
causing large jumps in the transmit latency threshold. This should
keep unreasonable timing latencies from occurring (e.g. latencies of
20+ frames).

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3981 19bc5d8c-e614-43d4-8b26-e1612bc8e597
transceiver: uhd: prevent output of underrun message at ERROR level

The appearance of underruns on B100 due to the latency transmit
window scares people. These should not be logged at ERROR level
because the events are generally not real errors. So use the same
behaviour of USRP1 of not logging these events. The presence of
underrun events can be determined by changes in the latency window
that is shown with log level set at INFO.

Signed-off-by: Thomas Tsou <ttsou@vt.edu>

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3988 19bc5d8c-e614-43d4-8b26-e1612bc8e597
multi-arfcn, sigproc: add signal processing core

The core signal processing components consist of C based implemen-
tations of operations including convolution, FFT, and interleaving.

The majority of operations are complex vector based and setup in a
form suitable for SIMD optimization in a straightforward manner.

Signed-off-by: Thomas Tsou <ttsou@vt.edu>
multi-arfcn, trx: add header wrappers for radio interface

Signed-off-by: Thomas Tsou <ttsou@vt.edu>
multi-arfcn, trx: add polyphase channelizer and synthesis filter

Polyphase channelizer allows for the use of 'M' independent
channels over a single physical device. In contrast to a
direct frequency translate and filter approach, the polyphase
implementation shifts processing from the high sampling rate
side and allows operation at the lower, more efficient
channel rate.

Multirate channelizer design consists of two stages. From the
perspective of the receive side, the first stage consists of
feeding the receive signal - sampled at 'M' times the channel
spacing - through a 'M' path polyphase filter. The output of
the filter consists of all channels aliased down to baseband.
Phase alignment is performed to separate the alised signals;
an FFT is used for efficient implementation.

In the second stage, the 'M' separated channels at the output
of the FFT are selectively downsampled from channel rate to
the GSM symbol rate. Another polyphase filterbank is used for
this purpose.

The transmit side "synthesis" filter combines 'M' channels
into a single output channel and is the inverse of the
aforementioned channelization process.

Signed-off-by: Thomas Tsou <ttsou@vt.edu>
multi-arfcn, trx: modify radio interface for multi-channel use

The radio interface needs to feed the device I/O buffers
synchronously in order to drive the channelizer. Asynchronous
channel access occurs opposite the radio interface through
a bank of thread-safe FIFO's or priority queue's on receive
and transmit sides respectively.

Setup 'M' channels and allow only a subset to be active at a
given time. When a channel is unused, there is no need to
feed the particular receive FIFO or pull data from the
channel priority queue.

Signed-off-by: Thomas Tsou <ttsou@vt.edu>
multi-arfcn, trx: modify single channel resampling for new sigproc

Use the SIMD optimized vector and signal processing calls. Also
plug into channel '0' of the multi-channel radio interface. We
also get additional speed by not allocating or shifting samples
memory during operation.

Signed-off-by: Thomas Tsou <ttsou@vt.edu>
multi-arfcn, trx: add multi-channel radio I/O backend

This implementation of the radio interface push and pull
operations runs a high rate sample stream through a
resampling channelizer to transparently present 'M'
channels to the radio interface. New channelizer and
synthesis filter classes are used for this task.

Signed-off-by: Thomas Tsou <ttsou@vt.edu>