* sms-split:
smqueue: Add SMSC short code to smqueue.config.example
Checking in forgotten smsc.cpp and smsc.h files.
Ignore User-Data-Header in SMS TPDU when decoding text in TLUserData::encode7bit().
Transparently pass TP-UHDI (User-Data-Header-Indicator) from SMS-SUBMIT to SMS-DELIVER.
Slightly cleaner output in TLUserData::write().
Log contents of a message instead of its memory addresss in SMS::parseTPDU().
Use decoded text from original message in bounce and e-mail messages.
More readable bounce message.
Maximum SMS length is 160 symbols in default alphabet.
Avoid duplication of "IMSI" in SC.Register.Msg.
Set Log.Alarms.* values in smqueue config.
Make "from" address for bounce messages configurable.
Move most of the SMS processing to smqueue (initial check-in).
Better documentation and error reporting for ThreadSemaphore.
Implementation of Semaphore.
Implemented "trans" CLI command to list all active transacions.
Idea is to make OpenBTS as dumb as possible. It should forward all received SMS messages' RPDU to SMSC (smqueue) and vice versa. All actual message decoding and processing is to be done in smqueue.
This reverts commit acdb4969d5.
The example log level was dropped down ERROR in order
to be extra nice to embedded devices, but NOTICE level
is still a more useful default setting for broader
issues.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
Receive buffer flush should continue to read until
either the desired number of packets has been read or
timeout, which means that the buffer has been emptied.
These are expected behaviours and should return true.
Ignore errors at this stage as the data and associated
metadata can be considered garbage and not worth
reporting. Actual error conditions will be caught
further downstream when useful data comes in.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
Transmit tuning was primarily setup for side A only. Some boards
- WBX - would still tune with improper channel arguments, though
receiver performance was disrupted.
Previous testing was primarily with single board on side A only
or dual configuration with side A transmit, so this bug largely
went undetected. Patch tested with RFX and WBX daughterboards
in single and dual configurations sides A and B.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
Bump abnormal asynchronous events - basically send errors -
up to ERROR level. These errors are dominated almost
entirely by underflow events, which should not be regularly
occuring.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
This bug slipped in because the following patch
was made before tuning adjustment changes that
negated the need for the I/Q swap.
753118031e
At this point, we assume that there are no
big-endian users of OpenBTS with the USRP1. If
there are any SPARC, PowerPC, or MIPS users,
hopefully they will be resourceful enough to
search the commit log and add the necessary
byte swaps.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
When setting rx gain from the console, the returned set
value would never change due to a braces error around
logging macros.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
Certain phones with GPRS capabilities will fail to
initiate calls with the following error. No call output
will be present in the Asterisk log.
1265648543.0255 INFO 3073350512 GSML3Message.cpp:162:parseL3: L3 recv RR GPRS Suspension Request
1265648543.0257 NOTICE 3073350512 DCCHDispatch.cpp:144:DCCHDispatcher: UnexpectedMessage
The issue and patch were discussed on the openbts-discuss
mailing list.
"David is right that openBTS does not emit any GPRS beacon,
so the behaviour is triggered from mobile station which
believe that there has been some GPRS before (i.e. in it's
old location area).
Unfortunately openBTS does not simply ignore this L3 RR
GPRS Suspension Request, instead a expected message flow
sequence (i.e. during call setup) is terminated with an
exception.
However we created a small patch against openbts-2.5.3
Lacassine to really ignore the L3 message. Feel free to
distribute it upstream to the community."
The author of the patch is >> Florian.Wolff@Siemens.com <<
According to his statement, O2 XDA Orbit and Motorola
Milestone are working fine with those changes. They had
the same problems before as with the iPhone.
Reported-by: Michael Folz <michael.folz@fh-kl.de>
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
If no bursts were received over a long enough duration
then the threshold would roll into negative territory.
The energy detection is based on a comparison with the
squared threshold, so all handsets would become
effectively barred after a certain period of
inactivity.
In theory, this bug also exists in the mainline tree,
but there the daughterboard receive gain is fixed at
max, which always allows the ADC to generate sufficient
noise to trigger the energy dectector and keep the
system in a valid steady state.
To fix, simply add a negative value check like those
already in place for other locations.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
UHD will internally accept floats with a range of +/-1.0,
which corresponds to a 16-bit signed integer range of
apporximately +/- 32000. Set the default amplitude to .3,
which is a safe value agaist saturation elsewhere in the
transmit chain.
The non-UHD maximum amplitude is unchanged at 13500.
Remove digital gain control because it's unnecessary and
causes extra load on enbedded systems.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
Lower the default setting to ERROR for main and TRX
logs. This makes the log friendlier for embedded
installations.
With default setting of midpoint and WBX board on
N200, the overall receive gain comes out to 19 dB.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
This is primarily a minor refactor with the exception
of non-recoverable errors - notably if the receive times
out - which almost always requires a reload of the FPGA.
In these cases, quit without trying as resistance is
futile.
ERROR_TIMING: Soft restart of streaming
ERROR_UNHANDLED: Benign errors
ERROR_UNRECOVERABLE: Abandon ship
Non-recoverable behaviour has not been observed in recent
builds, but may exist in older (or future) configurations.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
Overnight testing shows that this shouldn't be required
in the majority of cases, but shit happens. Enabling
this forces transmit timing realignment at one minute
intervals. As a fallback method, timing slips not
caught by normal checks will be reset at the update.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
At startup, instead of flushing initial packets blindly,
send a stop streaming command, flush, and start. The same
procedure is used in the event of a runtime timestamp
validity error.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
The output of the modulator or resampler is scaled and
converted from floating point to fixed point. The scaling
factor is the leftover dB in RF attention (relative to max
transmit power), which is handled prior to the integer
conversion. This should work across all daughterboards and
non-UHD installations.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
* dboard:
Transceiver52M: add WBX, DBSRX, and single board support
Transceiver: add WBX, DBSRX, and single board support
Conflicts:
public-trunk/Transceiver/radioInterface.cpp
Add gain and attenuation settings that were present
only in the 52MHz transceiver. This patch also
fixes SETRXGAIN failed warnings at startup.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
Previously this was referenced off the the ad9862
PGA with a range from 0 to -20 dB. Instead base
the attenuation factor on the maximum total RF
gain returned by the device.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
On a lapses of time monotonicity (and possibly other errors),
stop and restart the receive streaming with a buffer flush
in between. This is a cleaner replacement to the previous
clock reset with that didn't attempt to stop steaming.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
Type size_t was used in the UHD time_spec_t to integer
conversion, which would overflow at roughly 4 and a half
hours causing the sample buffer to error on timestamp
validity. Builds where size_t takes on 64-bits were not
affected by this bug.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
M_SILENT_RULES improves readability of the messages emitted by make,
compiler warnings are easier to spot.
Available since automake-1.11, ignored on earlier versions.
Traditional verbose output can be forced by
"./configure --disable-silent-rules" or "make V=1"
Written-by: Alexander Huemer <alexander.huemer@xx.vu>
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
With UHD b4fc0d61bb6cbd1a5614745bab9aeb0abc22cb6f
Sample clock will reset to zero after an overrun. Earlier
versions may hang the FPGA, which is non-recoverable,
requiring a manual image reload or reboot.
If reset to zero, attempt to kick the sample clock to the
last properly received timestamp value. At this point,
there will be a timing continuity jump, which will drop
connections, but transmit and receive chains should be
aligned allowing for re-establishment.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
Push the ability to set thread priority out to the 52M
Transceiver interface, because that's where the thread
control exists.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
Use the same header files for the device and start moving
toward a commmon transceiver without so much redundant code.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
Shadow all gains and frequencies, which minimizes device access.
This allows the transceiver to variably control the device
settings.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>