Age | Commit message (Collapse) | Author | Files | Lines |
|
Instead of extending 156/157 symbol sized bursts to 624/628 when 4
samples-per-symbol are used, use a fixed size of 625 samples, or
625.25 us.
This is a breaking timing change.
|
|
|
|
There are two primary changes in this commit:
1) Return values of detect functions changed form bool to int to actually pass
the return value from the inner function and notify higher levels about clipping.
Previously the information was lost due to conversion to bool.
2) Clipping level is not the final verdict now. We still try to demod a burst
and mark it as clipped only if the level is above the clipping level AND we can't
demod it. The reasoning for this is that in real life we want to do as much as
possible to demod the burst, because we want to get as much from our dynamic
range as possible. So a little bit of clipping is fine and is expected. We just
don't want too much of it to break our demod.
|
|
|
|
|
|
|
|
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>
|
|
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>
|
|
We should read gTrainingSequence starting from 0 bit index, not 61 bit index.
Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
|
|
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.
|
|
|
|
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.
|
|
is already running, and only return fail on device
failure
|
|
Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
|
|
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>
|
|
|
|
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>
|
|
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>
|
|
Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
|
|
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>
|
|
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>
|
|
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>
|
|
Signed-off-by: Tom Tsou <tom@tsou.cc>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
Differentiate between the two in order to provide enumeration
for dual-channel support.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
Very useful user information at startup.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
|
|
Mainly basic signed vs unsigned comparisons and intializer ordering.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
|