AgeCommit message (Collapse)AuthorFilesLines
2015-07-30Common: Use a scoped lock in the Logger to avoid deadlock on thread cancel.Alexander Chemeris1-2/+1
Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
2015-06-01sigProcLib: Fix burst start phase.Alexander Chemeris1-1/+1
R&S CMD57 complains about the start phase of bursts, particularly it shows -15 to -30 deg of error for the bit 0.5 position (start tail bit). This patch makes it happy. ETSI TS 145 004 section 2.2 describes this: "Before the first bit of the bursts as defined in 3GPP TS 45.002 enters the modulator, the modulator has an internal state as if a modulating bit stream consisting of consecutive ones (di = 1) had entered the differential encoder." Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
2015-06-01transceiver: Drive clock indication form the receive thread.Alexander Chemeris1-10/+5
Receive thread receives data from the device, which is a more stable source of clocking than the transmit side. If transmit side has a hiccup, osmo-trx doesn't send the clock indication, and transmit side is getting completely lost in time. With this patch we ensure that clock indication keeps coming. Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
2015-06-01transceiver: Fix out-of-bounds acces in genRandNormalBurst().Alexander Chemeris1-2/+2
We should read gTrainingSequence starting from 0 bit index, not 61 bit index. Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
2015-05-24osmo-trx: Fix random filler command line option.Alexander Chemeris2-3/+13
Filler types was of "bool" type, which prevented it from taking values greter than 1. And RAND filler type has integer value of 2, which was casted to 1 on assigning, which led to a normal filler table being used instead of the RAND one.
2015-05-24Common: Log to console instead of loging to syslog by default.Alexander Chemeris1-2/+2
2015-05-24Common: Introduce a global variable to disable syslog logging.Alexander Chemeris2-8/+11
When we enable DEBUG logging level, syslog gets Gb's of data and can completely exhaust the file system free space. Now we can just enable it. This is not to say that logging to syslog it just not very useful in general.
2015-05-24Transceiver52M: Change POWERON behavior to return success if the transceiver ↵Ivan Kluchnikov1-1/+1
is already running, and only return fail on device failure
2015-05-20Transceiver: Check TSC values to be in [0..7] range.Alexander Chemeris1-3/+3
Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
2015-05-20Transceiver: Make error response to an unknown command on UDP command ↵Alexander Chemeris1-0/+1
interface more understandable. Previously we just repeated the last response which could confuse a command sender. Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
2015-05-19test: Add command line random normal burst optionTom Tsou3-100/+164
2015-05-18uhd: Pass UHD command line arguments to constructorTom Tsou1-2/+2
Previous behaviour used UHD command line args string for device search, but did not apply the values to the device constructor. Now use the user passed args string for both find and device construction. Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
2015-05-18umtrx: Don't use DSP tuning, because LMS6002D PLL steps are small enough.Alexander Chemeris1-1/+13
We end up with DSP tuning just for 2-3Hz, which is meaningless and only distort the signal. Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
2015-05-18uhd: Set RF frontend bandwidth for UmTRX to improve signal quality.Alexander Chemeris1-0/+10
Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
2015-05-18UmTRX: Manually set Tx gain stages for the best signal quality.Alexander Chemeris1-4/+41
New UHD versions support split configuration of Tx gain stages. We utilize this to set the gain configuration, optimal for the Tx signal quality. From our measurements, VGA1 must be 18dB plus-minus one and VGA2 is the best when 23dB or lower. Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
2015-05-18build: Provide option for disabling SSE autodetectionTom Tsou1-1/+8
Setup '--with-sse' option to check system capabilities by default, but allow disabling by the user. Selective SSE build options can be controlled by the user by defining specific HAVE_SSE options. Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
2015-05-18sigproc: Add clipping detection on RACH and TSC inputTom Tsou3-6/+43
Alert user of overdriven burst input indicated by a positive threshold detector result. This indication serves as notification that the receive RF gain level is too high for the configured transceiver setup. Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
2015-05-18uhd: Use full DAC scale with UmTRX to improve signal quality.Alexander Chemeris1-3/+17
Signed-off-by: Tom Tsou <tom@tsou.cc>
2015-05-18build: Add 'subdir-objects' to AM_INIT_AUTOMAKETom Tsou1-1/+1
This will shutup automake and make it stop complaining about the following subdirectory warnings. "warning: source file 'common/fft.c' is in a subdirectory, but option 'subdir-objects' is disabled" Signed-off-by: Tom Tsou <tom@tsou.cc>
2015-05-07radioInterface: Reset sample buffer cursors on each startTom Tsou1-0/+3
Non-zero buffer indices may lead to uplink/downlink timing offset during repeated start/stop cycles. Mainly affects USRP2 and other resampled devices that rely on the buffer to absorb sample block sizes that are not multiples of the burst size. Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
2015-01-19usrp1: Update device API for frequency offset tuningTom Tsou1-1/+1
Commit 8e17df7374367d57 "Add option for baseband frequency offset", modified the base device API to allow for RF tuning, which was never updated for the USRP1. Update the implementation to match the API, however, note actual offset in the USRP1 remains unsupported. Signed-off-by: Tom Tsou <tom@tsou.cc>
2014-12-15b210: Lock dual-channel tuning accessTom Tsou1-0/+3
Frequency tuning is a multi-step process with RF and DDC/DUC protoimns that can be corrupted if both channels attempt to tune at the same time. Signed-off-by: Tom Tsou <tom@tsou.cc>
2014-12-15Transceiver52M: Add X300/X310 and E310 USRP supportTom Tsou1-13/+38
Treat X300 similar to N200 and resample with 100 MHz base clocking, which provides some amount of oversampling for reduced phase error compared to the 1 sample per symbol receiver. Treat E310 similar to 13 MHz rate devices for the lowest computational use. Signed-off-by: Tom Tsou <tom@tsou.cc>
2014-12-15Transceiver52M: Implement POWEROFF commandTom Tsou7-102/+229
Add stop and restart capability through the POWEROFF and POWERON commands. Calling stop causes receive streaming to cease, and I/O threads to shutdown leaving only the control handling thread running. Upon receiving a POWERON command, I/O threads and device streaming are restarted. Proper shutdown of the transceiver is now initiated by the destructor, which calls the stop command internally to wind down and deallocate threads. Signed-off-by: Tom Tsou <tom@tsou.cc>
2014-12-15Transceiver52M: Allow setting gain before POWERONTom Tsou4-30/+26
There is no reason gain settings should not be modifiable when the radio is running or not. Signed-off-by: Tom Tsou <tom@tsou.cc>
2014-12-15CommonLibs: Add thread cancellation capabilityTom Tsou1-1/+8
For clean shutdown in the transceiver we need to cancel and join running threads for orderly unwinding. Thread cancellation points already exist, so we just need to be able to call on the threads to exit out when stopping or shutting down. Don't error when joining a NULL thread, which would be the case if a thread was stopped before ever being started to begin with. Signed-off-by: Tom Tsou <tom@tsou.cc>
2014-12-15uhd: Display current timestamp with buffer status errorsTom Tsou1-6/+7
Existing implementation outputs sample buffer parameters, but it is helpful to know the submitted timestamp that led to the errant condition. Signed-off-by: Tom Tsou <tom@tsou.cc>
2014-05-08Transceiver52M: Fix SSE convolution shuffle registerThomas Tsou1-1/+1
An errant shuffle register value used in complex-complex convolution causes distorted correlation peak-to-average values for certain TSC values. The error effect varies for different TSC sequences with the most noticeable effect of degraded detection on TSC 1 and no effect on TSC 7. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2014-04-15Transceiver52M: Fix retransmissions when filler table is enabledThomas Tsou1-0/+4
Commit 15d743efaf8d3ec8dacd37fbac434c1e719c0b30 "Disable filler table retransmissions by default" made OpenBTS style filler table behavior optional. When enabled, dummy bursts were automatically loaded into the filler table, but the table was not updated and only filler busts were retransmitted. Enable the restransmit state flag when the filler table option is specified. Only preload filler table and enable retransmissions on channel zero. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2014-04-09Transceiver52M: Add E1XX USRP device id and timingsThomas Tsou1-2/+21
Device specific timing settings for the E100 and E110 were missing from the Tx/Rx offset table. Add E1XX identifier and offsets to the device list and offset table respectively. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2014-03-27Transceiver52M: Allow startup delay for stream alignmentThomas Tsou1-5/+11
UHD requires a small amount of time to align multiple streams at startup. Delay the startup by 100 ms relative to the queried device time (actual delay inclusive of control latencies will be less). The following error is only relevant to dual-channel UHD devices (e.g. Fairwaves UmTRX and Ettus B210). UHD Error: The receive packet handler failed to time-align packets. 1002 received packets were processed by the handler. However, a timestamp match could not be determined. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2014-03-27Transceiver52M: Set UHD rates before creating streamersThomas Tsou1-12/+12
Recent versions of UHD require setting the sample rate before creating streamers otherwise the following exception occurs. Boost_105300; UHD_003.007.000-0-g7fef199d terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::math::rounding_error> >' what(): Error in function boost::math::round<d>(d): Value -nan can not be represented in the target integer type. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2014-03-06Transceivert52M: Add option for baseband frequency offsetThomas Tsou3-13/+28
Allow command line setting of the DSP frequency in UHD. All channels will be tuned with the same offset. Dual-channel tuning with the B210, which uses a single LO, will override the command line offset value and set the DSP frequency automatically. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2014-03-03Transceiver52M: Enable B210 dual channel supportThomas Tsou1-12/+89
The main difference between existing UmTRX dual channel is the single LO on B210 transmit and receive front-ends vs. independent tuning paths. In order to support dual-ARFCN frequencies, baseband offset conversion must be applied by tuning the FPGA CORDIC for each channel. For B210, the following tuning order is applied. 1. If the new frequency of channel A is within the baseband range of channel B, then retune both channels with the RF centered and equal valued positive and negative baseband shifts. 2. If the new frequency of channel A is not with the baseband range of channel B, then retune channel A directly (without manual applied offset). Channel B will no longer be tuned to the previous frequency. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2014-03-03Transceiver52M: Disable initial device time resetThomas Tsou2-21/+31
With dual-channels on B210, we lose the ability to reset both channels to a synchronized state. Instead, let the timestamp clock start with an arbitary value, which is the first timestamp received from the device, instead of a near-zero value. This approach also makes integration for device, in general, with free-running timestamp clocks. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2014-03-03Transceiver52M: Split B200 and B210 identifiersThomas Tsou1-7/+13
Differentiate between the two in order to provide enumeration for dual-channel support. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2014-02-13Transceiver52M: Set B2XX clock frequency to 26 MHzThomas Tsou1-1/+1
Change from the original USRP1 rate of 52 MHz. On B2XX we can use 26 MHz, which is closer to the default 32 MHz of the device. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2014-01-26Transceiver52M: Disable filler table retransmissions by defaultThomas Tsou3-23/+60
Burst selection at a particular time works in the following order of priority. 1. Slot is disabled with channel combination set to NONE (default) 1. Burst exists in priority queue for the current time. 2. Filler table entry is used This patch sets default behaviour to force all filler table entries to zero and disallows filler table changes. This effectively means that only bursts received from upper layers will be transmitted and nothing will be automatically transmitted in the absence or delay of incoming burts at a particular time. New Command line option "Enable C0 filler table" allows reverting to previous idle burst generation and retransmission behaviour on TRX0. Retransmission cannot be enabled on non-C0 channels. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-18Transceiver52M: Add missing scaling vector resizeThomas Tsou1-0/+1
Downlink scaling factors, which are stored in a vector for multiple channels, was not being sized correctly. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-17Transceiver52M: Remove database configuration file requirementThomas Tsou1-31/+14
We don't require any parameters stored in the configuration table, so don't bother with the existence of the persistent database file. This also removes an unnecessary step during initial setup since relevant parameters can be configured from the command line. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-16Transceiver52M: Ignore channel estimation if we are not equalizingThomas Tsou1-1/+1
Equalization is currently disabled by default. As such, we don't need to run channel estimates or even track the update state, which would otherwise be allocating/decallocating the channel state vector at regular intervals. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-16Transceiver52M: UHD: Check running status before stopping streamThomas Tsou1-1/+4
On startup errors we get a segfault if we stop and shutdown. This is because we try to send a stop stream command to the device before it has been created. Setup a check for running status before attempting to stop the physical device. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-16Transceiver52M: Create new osmo-trx executableThomas Tsou4-237/+420
Create new main executable with full command line option parsing of relevant parameters. Database configuration table still exists (and must exist because of the global gConfig object), but can be bypassed with command line options. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-16Transceiver52M: Output device and operating mode to stdoutThomas Tsou1-12/+17
Very useful user information at startup. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-15Transceiver52M: Enable all warnings and resolveThomas Tsou8-17/+17
Mainly basic signed vs unsigned comparisons and intializer ordering. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-15Transceiver52M: Add virtual destructor for radio deviceThomas Tsou1-0/+2
Empty destructor removes compile warning. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-15Transceiver52M: Remove unused codeThomas Tsou6-68/+3
This includes unknown and unused variables, functions, and non-relevant documentation. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-15Transceiver52M: Allow only channel zero to set TSC valueThomas Tsou1-3/+5
We support one TSC value per each transceiver object. Only channel zero can set this value. Other channels can attempt to set the TSC value, but will error if the TSC does not match the existing value. In either case, non-zero channels do not manipulate the gloabl TSC setting. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-15Transceiver52M: Use independent power scaling varables for each channelThomas Tsou4-22/+20
Simply vectorize the existing power state variable. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-15Transceiver52M: Set const qualifier on appropriate radio vector methodsThomas Tsou2-4/+4
Pointer accessor and noise average methods for radio and noise vectors respectively. Signed-off-by: Thomas Tsou <tom@tsou.cc>