path: root/Transceiver52M
AgeCommit message (Collapse)AuthorFilesLines
2017-12-14initial libxtrx supportSergey.Kostanbaev5-0/+658
2017-12-04UHDDevice.cpp: add USRP B205mini supportPiotr Krysik1-0/+1
The B205mini is similar to the B200mini and runs OsmoTRX just fine, so let's make OsmoTRX recogonize and support it too. Change-Id: Iee575121248ea541f7abc49055e49ec2d30904c0
2017-08-16Add -j option to bind to specific addressPau Espin Pedrol3-15/+27
Before this patch, the binding of the listening sockets was hardcoded to a local IP. Change-Id: I9ba184a1251c823e413a9230943ed263e52142ec
2017-07-20Add '-t' command line option to enable SCHED_RRHarald Welte1-2/+29
SCHED_RR allows us to operate osmo-trx reliable even under exceptionally high system load, as the realtime scheduler priority will have higher priority than the other "regular" tasks on the system. Change-Id: Ia2452b9763960b2be37fbeee9d832554da68a53f Closes: OS#2344
2017-07-10LimeSDR: Fix sample value rangeignasj1-2/+1
when "sc16" stream arg is passed to SoapyUHD sample value range is -32768 to 32767 Change-Id: I58b8b6b71648bd9cbc105ddaaa9a7cf0a31b3d47
2017-07-10LimeSDR: change tx window type to TX_WINDOW_FIXEDignasj1-1/+1
It seems that TX_WINDOW_USRP1 is for devices that do not support tx sync to timestamp. LimeSDR supports it. Changing to TX_WINDOW_FIXED greatly reduces number of "dumping stale buffer" messages Modified to match current master by Harald Welte. Change-Id: I8de5b165ccd72a62b0f16655618e24ca740d9637
2017-07-10LimeSDR: Change device detection to work with USB and PCIe versionsignasj1-1/+1
Modified to match current master by Harald Welte. Change-Id: Ie43610de0b2196d84caf09717ec8c8ca75ab926d
2017-07-04transceiver: Avoid sending clock indications when trx is not powered onPau Espin Pedrol2-8/+6
Stop calling writeClockInterface() when receiving commands in Transceiver::driveControl, otherwise it fools osmo-bts-trx clock skew check because it is always sending a clock indication with the same fn when it issues any commands during the time in between CMD POWEROFF and RSP POWERON, because fn is not increased during that period. Also use mForceClockInterface flag to delay delivery of first IND CLOCK until we start serving frames, otherwise the first one is sent and only after a long period of time the next clock indications are sent, when the radio starts to process bursts. That makes osmo-bts-trx unhappy because it expects to receive an IND CLOCK aprox at least every 400 frames. This way also we send the first IND CLOCK after the RSP POWERON 0 response. Change-Id: I91b81a4d7627cec39c1814a39ed4be306681b874
2017-07-04cosmetic: transciever: Remove trailing whitespacesPau Espin Pedrol2-12/+11
Change-Id: Ib3fbe768048b2a34a75ace9688e306720e67019a
2017-06-29LimeSDR: set approximate tx offset value to make GSM workTom Tsou1-1/+1
may be fine-tuned in the future Modified to match current master by Harald Welte. Change-Id: Ied215ca9e9d9c346c2a654f96785d1b87b075129
2017-06-27uhd: Always specify samples-per-symbol for device lookupTom Tsou1-2/+2
Fix MCBTS device setup where the map access was failing on the wrong assumption that all devices support 1-SPS TX-RX operation. Some devices and/or configurations such as LIMESDR and MCBTS only support running at 4-SPS. Even though certain settings (e.g. number of physical channels or the FPGA clocking rate) are not dependent on the SPS value, we still need to specify because we use SPS as a parameter for device classification. Fixes: OS#2341 Change-Id: I56e939285d585cc38efa6c329e30e3acebb734eb Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
2017-06-22sigProcLib: Specify standard namespace for isnan()Tom Tsou1-1/+1
In commit a3dce85f "sigProcLib: Use explicit NaN check in sinc table generation" Use of std::isnan(double) was added without namespace specifier, which may cause build issues depending on whether the C version isnan() call is available. Add standard namespace to force C++ call usage and potential build issues. Change-Id: I49328c43fdd690a4e6a2b2e949411aaf5674ead1
2017-06-22sigProcLib: Replace dynamically allocated resampling buffersTom Tsou2-76/+39
Instead use object allocated STL vectors. This simplifies code, removes the need to explicitly release buffers, and fixes a memory leak in destructor deallocation. Also, remove simplified init and release sub-calls. Maintain partition filter allocation using memalign() for SIMD alignment requirements. Change-Id: Ie836982794c10fb1b6334e40592d44b200454846
2017-06-19sigProcLib: Use explicit NaN check in sinc table generationTom Tsou1-9/+3
Using "x < 0.01" is a crude check for detecting NaN condition, which occurs in a sinc call when x = 0 due to divide-by-zero. Use stdlib isnan() call for this purpose. Also, as the table is created only once during initialization, use double floats for table value generation. Change-Id: I3a838fe3139fa977dfe906246020a14451185714
2017-06-19sigProcLib: Remove trigonometric tablesTom Tsou1-36/+8
Trigonometric sin/cos tables are unused after initialization. There is no benefit to implementing lookup tables for run-once operations. Also perform initial calculations in double width because there is no penalty for doing so. Change-Id: I45bba5daf8610cbba6af95b92c2142f2256491ff
2017-06-16sigProcLib: Remove heap based signal vector allocationsTom Tsou1-84/+51
The osmo-trx internals rely heavily on dynamic alloction of I/Q signal vectors. In a number of cases there is no reason to to use dynamic rather than stack based allocation. Convert these cases accordingly. Change-Id: If53da1bf77b5944b6117765fa98ce12e1ccdeede
2017-06-16sigProcLib: Fix complex/real vector flag in Laurent modulatorTom Tsou1-1/+0
The modulator vector to be shaped by Laurent C1 pulse is complex, but was set as real. The error does not affect behaviour because we only support complex-complex and complex-real calculations; real-real convolution is not supported. So in this case the data vector was already assumed to be complex despite the improper flag setting. Change-Id: I03afc6a93a01fde7a9a02e4eb9d201d3ee37d21a
2017-06-16transceiver: Fix POWEROFF crash on USRP2/N200/X300 devicesTom Tsou1-5/+4
Upon issuing POWEROFF command to a running transceiver, UHD interfacing thread state may become undefined if the device is stopped with I/O threads still active. Bad behavior is device dependent with only network based USRP devices affected. USB based device thread behavior stops and shutdowns as expected. Tested with N200, X300, and B210. Tested solutions include the following: 1. Set pthread_setcanceltype() with PTHREAD_CANCEL_ASYNCHRONOUS 2. Add sleep delay to allow I/O threads to timeout before stopping the device 3. Wait for I/O threads to join after cancellation before stopping the device This patch resolves the issue by with the third approach. Number 1 is not guaranteed to always work with UHD internals as driver code may explicitly set thread parameters. Using sleep calls to fix order-of-operation issues is almost never a good idea. Change-Id: Ib72ab98a27a02084b040319046c92d1c4157ae4c
2017-06-16uhd: Fix USRP2/N200/N210 device detectionTom Tsou1-12/+12
Commit 1fb0ce67 "uhd: Use map container for for device parameter access" inadvertently removed the string identifier for the USRP2 and derived devices (N200/N210). Add the missing USRP2 string identifier. Also search for partial string matches in the UHD provided device and mboard stings. This is necessary to guarantee that strings such as "N200r3" instead of just "N200" are sucessfully found. Tested with N200, X310, B200mini and B210 devices. Change-Id: Ide4e22418e2cc469418cba018970cb0eb9906697
2017-06-15uhd: Fix Tx-RX timing offset settingTom Tsou1-1/+1
Integer timestamp offset was set to zero due to bad cast-operator precedence. Change-Id: Ib1f524cc86416699b3c143e5faddb33d61380767
2017-06-14uhd: Add non-UmTRX channel swap supportTom Tsou1-21/+44
Previously an UmTRX-only feature. Change-Id: I4a0e0c1d69e89993158e948535ad33f54e568d2d Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
2017-06-14sigProcLib: Remove unused functions from public interfaceTom Tsou2-467/+52
Also remove entirely completely unused calls. Most of these calls have been around since OpenBTS conception. Nearly a decade is long enough time for deprecation. Change-Id: Ifc122aaff23414c363b4b00f99061eed8a6902d0
2017-06-12uhd: Use map container for for device parameter accessTom Tsou1-274/+84
OsmoTRX is written in C++ so we might as well use built-in container types when applicable. Map access allows removal of significant amounts of special device handling code. Aggregate device rates and timing offsets into a single table with access keyed by device/tx-sps/rx-sps tuples. Change-Id: I8660f75a2b2a13488b913c07637bdd0f5f0f4cf9 Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
2017-06-08ssedetect: call __builtin_cpu_supports() only if supportedVadim Yanitskiy3-1/+11
Some compilers don't support the __builtin_cpu_supports built-in, so let's make them able to compile the project anyway. Change-Id: I0c90402d8e4c9f196c54b066ff30891c8de3ad2b
2017-05-29sigProcLib: Fix number of tail bits in random Normal Bursts and zero ↵Alexander Chemeris1-3/+9
Stealing Bits. This bug only affects generation of normal bursts filled with random bits which are used in test mode. It doesn't affect operation of osmo-trx during normal operation. That's why it has stayed unnoticed for so long. Each Normal Burst has 3 tail bits, not 4. Also it's better to set stealing bits to 0 for maximum compatibility. We may want to introduce a selector for each bit whether to set it to 0, to 1 or to a random number. Change-Id: I0377029556c8b681b3ba3b635bf19572b34546ea
2017-05-19radioInterface: Remove UmTRX 'diversity' optionTom Tsou9-406/+16
The 'diversity' option was an experimental 2 antenna receiver implementation for UmTRX. The implementation has not been maintained and current working status is unknown. In addition to code rot, Coverity is triggering errors in the associated code sections. Removal of code cleans up many cases of special handling that were necessary to accommodate the implementation. Change-Id: I46752ccf5dbcffbec806081dec03e69a0fbdcdb7
2017-05-19cosmetic: Add info about SSE supportPhilipp Maier1-0/+16
The osmo-trx binary outputs no info about its SSE support status. This commits adds some putput that informs about the SSE of the binary and also tells which of the SSE levels the CPU supports. Change-Id: Iacc83fd668c31644e0efb3e18962cf2870ed1daf
2017-05-19buildenv: Split up SSE3 and SSE4.1 codePhilipp Maier9-658/+881
Currently we find SSE3 and SSE4.1 code mixed togehter along with generic code in one file. This introduces the risk that the compiler exidantly mixes SSE4.1 instructions into an SSE3, or even worse into a generic code path. This commit splits the SSE3 and SSE4.1 code into separate files and compiles them with the matching target options. Change-Id: I846e190e92f1258cd412d1b2d79b539e204e04b3
2017-05-19cosmetic: remove code duplicationPhilipp Maier5-35/+49
The ARM and the X86 implementation of the conversion functions share the same, non cpu specific implementation in separate files. This commit removes the code duplication by putting the generic implementation into a convert_base.c, similar to to convolve_base.c Change-Id: Ic8d8534a343e27cde79ddc85be4998ebd0cb6e5c
2017-05-19ssedetect: Add runtime CPU detectionPhilipp Maier6-49/+142
The current implementation can select the SSE support level during compiletime only. This commit adds functionality to automatically detect and switch the SSE support level and automatically switch the Implementation if the CPU does not support the required SSE level. Change-Id: Iba74f8a6e4e921ff31e4bd9f0c7c881fe547423a
2017-05-02cosmetic: Make parameter lists uniformPhilipp Maier2-110/+143
The non-sse implementation and the sse implementation of the convert and convolve functions have different parameter lists. This makes it difficult to use function pointers in order to select the right function depending on the SSE-Level and CPU. This commit uniformizes the parameter lists in preparation for planned runtime cpu detection support Change-Id: Ice063b89791537c4b591751f12f5ef5c413a2d27
2017-05-02buildenv: Turn off native architecture buildsPhilipp Maier1-1/+1
The compiler option -march=native instructs the compiler to auto-optimize the code for the current build architecture. This is fine for building and using locally, but contraproductive when generating binary packages. This commit replaces -march=native with $(SIMD_FLAGS), which contains a collection of supported SIMD options, so we won't loose the SSE support. Change-Id: I3df4b8db9692016115edbe2247beeec090715687
2017-04-10config: Remove OpenBTS style sqlite configurationTom Tsou1-80/+4
OpenBTS relies on reading in configuration values from the OpenBTS.config sqlite3 database. This configuration method is not maintained and not recommended for Osmocom or OpenBTS use. Command line setup is the recommended approach. Note that when the osmo-trx logging mechanism is replaced, the sqlite dependency will be removed. Change-Id: I95d7b771fde976818bee76f89163e72c3a44ecdd
2017-04-03Transceiver: Remove unsigned negative comparesTom Tsou2-3/+3
Change-Id: I49f30699786c52736ef334dae61f7bbd65d878d5 Fixes: Coverity CID 149353, 149356
2017-04-03Resampler: Fix non-array delete for filter tapsTom Tsou1-1/+1
Change-Id: I59cdb01809da5940c74aaae9d17f413aefbf04b2 Fixes: Coverity CID 149349
2017-03-31sigProcLib: Fix negative value check on unsigned valueTom Tsou1-1/+1
Convert negative value check on unsigned value to zero check to avoid potential divide-by-zero error condition. Change-Id: Ib0d7d1bceb5fe66e69345db93a74e3e0773a2257 Fixes: Coverity CID 165059
2017-03-31sigProcLib: Check return status on downsamplingTom Tsou1-2/+6
Improper length values will cause the polyphase resampler rotation to fail. Check return and return NULL on error. Change-Id: I3ad22f9fd7a20754f589c04258dcca3770474a9b Fixes: Coverity CID 165235
2017-03-31sigProcLib: Remove unreachable code and no-effect checksTom Tsou1-6/+2
Unreachable path and negative value inspection on unsigned types. Change-Id: If53b4b03550b0a7656c808cfe96806252153eb2f Fixes: Coverity CID 165239, 165238, 165236
2017-03-31Resampler: Fix initialization return checkingTom Tsou1-1/+1
Greater-than comparison was used on boolean type. Change-Id: Ia3b71b3a06b34a6fd781bf197ecf9d5cc1711d13
2017-03-28sigProcLib: Constify demodulation functions burst argument.Alexander Chemeris2-10/+10
demodCommon() used to scale input vector in place which changed original data. That's a bad practice and is not really necessary, so I've changed the code to scale burst after it's copied to a new vector during a delay operation. Change-Id: Ic45f71b634e48808356d68925bb9f5783e0bf0d3
2017-03-28sigProcLib: constify signalVector arguments for detectBurst() functions.Alexander Chemeris2-23/+24
Change-Id: Ic033371a387353eb12b1827a0eb16c00c07da88a
2017-03-28Move Transceiver::demodulate() to sigProcLib to make it reusable.Alexander Chemeris4-17/+14
Change-Id: I2cad47160e53f65612bd1da8998c83a0a22bce9b
2017-03-28sigProcLib.h: Fix whitespaces. No non-whitespace changes.Alexander Chemeris1-46/+46
The file seem to be using "2 spaces" indent, bt some lines are using tabs which breaks formatting. Change-Id: I7718cca45c245c9e91250ab2877f5436d4029698
2017-03-28sigProcLib: Add operator<< to print CorrType to a string.Alexander Chemeris2-0/+25
Change-Id: I3d68cbdab8fb504d7f155029654a576d318a201e
2017-03-28Move BURST_THRESH from Transceiver.cpp to sigProcLib.h to make it reusable.Alexander Chemeris2-9/+9
Change-Id: I5a888890e26858c0fbb2ddb7ef23cb0fd66a64b4
2017-03-24Move Transceiver::detectBurst() to sigProcLib to make it reusable.Alexander Chemeris4-37/+56
Change-Id: I3cbe8e6e4f39dde02c945e6c9086c040e276845c
2017-03-24sigProcLib: rename signalError type to SignalError.Alexander Chemeris1-1/+1
Change-Id: I1a5ae6e87d4c69945053fdefec185d0fb1a26399
2017-03-24Move CorrType type from Transceiver to sigProcLib.Alexander Chemeris3-12/+12
Required to move Transceiver::detectBurst to sigProcLib. Change-Id: I3e0e74a98bbca4d19657f50a5fb447f078663c9b
2017-03-24signalVector: Implement segment().Alexander Chemeris2-0/+8
Change-Id: I6fe3aae53fb2fa5bb7637e976de6059eabe08202
2017-03-22Call vectorSlicer() right before packing bits for transmission to osmo-bts.Alexander Chemeris2-3/+3
vectorSlicer() converts soft-bits from -1..+1 to 0..1 while we want to keep SoftVector in -1..+1 mode until the last minute, because at some point we'll want to transmit -1..+1 to osmo-bts instead of converting it from 0..1 back to -1..+1 on the osmo-bts side. Plus it removes code duplication - we call it once instead of twice. Change-Id: Idd6ddd7ac219afb0df055a692632678b66373764