Age | Commit message (Collapse) | Author | Files | Lines |
|
The dev type was set too early, but the actual dev is only being
discovered during open, so update it. This broke the gain to power
mapping by defaulting to a wrong device.
Change-Id: I1dda6023ca6f15bc063c3dfbc704db2410ff7c98
|
|
This is basically common, but optional code.
Change-Id: I64f5a462451e967d4750d8e4f1d5832cbab41cff
|
|
Passing 7 args is a bit much, just pass the config struct instead.
Change-Id: I48386900d15ff4d770c70a4efc246d32f921904b
|
|
Change-Id: I855bd8ea6d9cb0f285f4dbbf3bcd09bff4e71044
Fixes: CID#240718
|
|
Before this patch, reconnecting to osmo-trx and attempting to configure it for
another band is not going to work without restarting the process.
The new variable is added in order to still allow POWEROFF followed by a
POWERON without need to reconfigure the device. In that case, previous
configuration is kept.
Change-Id: I43e5e1e4dcb36be605c6bd25dd6a5f3649e244e7
|
|
There's no need to spend time looking up again the same band
description.
Change-Id: I6f5631c9e64b9c261d52a856d757d08d2f336947
|
|
So far the validation is only done on TxFreq for all TRX. Let's also do
it for RxFreq.
Change-Id: I30eef2727ee96b1344aa1416edd66e2302b88964
|
|
Same check is already done by set_band().
Change-Id: I48d14f35e83fa17d1a8f4154479f0a5cee0f816d
|
|
Gain setting without a band was apparently led to a very low output
level, thanks to defog for pointing this out.
Change-Id: I8b59d38dd7b0781776c9e61226185879541fdc53
Related: OS#3342
|
|
Neither VTY nor CTRL API is used in device specific code, excluding
the 'uhd' where osmo_cpu_sched_vty_apply_localthread() is called.
Change-Id: I568b443da4b96c005734d749faa22b9c7440f951
|
|
Change-Id: I4329801c502db73efa946f15c103b2c081cee5a7
|
|
Change-Id: I6aedb72306461ebb944fc13a795b0bf3121ea275
|
|
Otherwise, the linker fails to produce osmo-trx-lms binary:
LMSDevice.cpp:493: undefined reference to
`get_value_string(value_string const*, unsigned int)'
LMSDevice.cpp:237: undefined reference to
`osmo_panic(char const*, ...)'
Change-Id: I2fef166c13136af7b7aaa744d39427d76ad11769
Fixes: OS#4828
|
|
Prior to this patch, osmo-trx relied totally on proper VTY configuration
being set in "rssi-offset" together with the RxGain set through TRXC in
order to provide correct Uplink RSSI measurements to bts-trx.
With this patch, RSSI is now by default calculated (in LMS and UHD
backends) based on the currently set RxGain, by providing empirically
discovered values. Still, for backward compatibility, the old
"rssi-offset" command will overwrite completely the per-default
calculated rssi offset.
A new optional parameter "relative" is added at the end of the
"rssi-offset" VTY command to flag the value as relative to the newly
per-default calculated value. This way specific setups (like adding a
LNA / RF fronted) can still be expressed while still keeping the
automatic per-default offset.
Related: OS#4468
Change-Id: I8ef78fd20c22c60d61bfb18d80a4a36df4fd6c20
|
|
specific TxGain
Change-Id: I3c54c61cd6dd7e40bb2831fd4962ff72130b390d
|
|
All radioDevice subclasses except USRPDevice have already been reworked
to use the new SetPowerAttenuation() methods, hence we can drop the
compatibility layer that was added to transition from the old API to the
new one, and move those functions to USRPDevice.
This way we simplify the parent abstract class with methods not needed
by most devices and not used anymore by external users of those classes.
Change-Id: Ice005cd0a07c49b6e212c06f1228ef93c24db727
|
|
Right now, according to a few measurements taken on LimeMicro devices, we
expect the Tx Gain at UHD level to relate 1:1 with the slope in Tx output
power given a specific band.
If more fine-grained results are wanted or some device doesn't follow a
1:1 slope relationship, functions TxGain2TxPower and TxPower2TxGain need
to be adapted/improved.
This patch is basically doing the same thing as was done previously for
UHDDevice in 992c9bd1cea410e2dd42ce7566299104b5648aff.
Related: OS#4583
Change-Id: If154fe4d4cd118aa30ea43c22ee7119117b77da6
|
|
specific gains
All the Tx gain related APIs are left out of reach from radioInterface,
and in there we simply interact with radioDevice passing the attenuation
received from TRXC.
Prior gain logic is moved in base radiodevice class, with the idea that
the setTxGain() and related functions will be dropped over time in each
sublcass in favour of an specific implementation of the
SetPowerAttenuation API.
Change-Id: I4f8a1bcbed74aa9310306b97b0b1bfb02f7855e6
|
|
It allows the BTS to retrieve the nominal transmit output power value of
each TRX in order to compute attenuation later on and apply it through
SETPOWER or ADJPOWER TRXC commands.
Change-Id: I1d7efe56e008d8d60e23f9a85aa40809f7f84d9c
|
|
The out "isControl" parameter is only used by internal callers of
USRPDevice, and not used at all by any user of the generic API
(radioInterface*.cpp). Hence, we can get rid of it and keep it as a flag
for an internal API of USRPDevice.
Change-Id: I843384e24b76cdd28a95f9ee4e95e6157098e4a3
|
|
The out "RSSI" parameter is only filled by USRPDevice, and not used at
all by any user of the API (radioInterface*.cpp).
RSSI seems to be computed nowadays in the common path in
Transceiver::pullRadioVector().
Change-Id: I06c2ea5a9891d170bc468f952bbf2a7e64d95784
|
|
With current state multi-arfcn can be used (eg. I can place a call
between 2 phones using TRX1 and sustain for as long as wanted), but from
time to time (around every 20seconds), a burst of Tx packed dropped
events from LimeSuite appears.
LimeNet-micro coefficients have yet not been tested.
Related: OS#4362
Change-Id: I7e67d90a8126546eeeeba376f816ec5d158d4712
|
|
Right now the values are the same for all devices, but they will differ
in forthcoming commits once multi-arfcn support is added.
Change-Id: I262d3a71848fc3070473e29e42820848e7591d02
|
|
Add an enum containing each supported device type (LimeSDR-USB,
LimeSDR-Mini and LimeNet-Micro) plus "unknown", to leave some room for
yet-to-come devices to run with some generic parameters without
rebuilding osmo-trx.
Each device type is assigned a dev_desc structure, and all of them are
put in HashMap, similar to what's already done in UHDDevice.cpp.
Device type is infered from string provided by LMS_GetDeviceInfo(), as
it was already done before in several places. From now on, we only need
to parse the string once since we store the device type after first
during open time.
Later on, more fields will be moved to device-type specific structure,
such as Tx timing offset, clock rate, etc.
Change-Id: I7658615787c5bc41c365bab9c11733b701ac2ae5
|
|
Release is done in destructor, so let's move allocation to constructor
since there's really no need to have them in open() which is already
quite complex and large.
Change-Id: I8a4fd973590c4c165abd8f2837b2da8fc14a2066
|
|
Change-Id: Ieebdbd3d5082a02aea2441e6737783370511cbc1
|
|
channel number mangling based on multi-arfcn feature being enabled was
moved to generic radioDevice() to reuse code. Hence, the generic parent
constructor sets this->chans to 1 if multi-arfcn feature is requested.
However, LMSDevice constructor argument had same name as the class
instance attribute, taking preference. As a result, if multi-arfcn is
enabled in LMSDevice, the generic constructor first sets this->chans=1
but afterwards LMSDEvice constructor keeps calling .resize() with the
argument value "chans" instead of using this->chans.
Let's rename the argument in all radioDevice child class constructors to
avoid potential future bugs in all of them.
Change-Id: Id6c837e9133f22783dd92a81dfcc493e51bf2d21
|
|
Change-Id: I511abe2c333443b978a3767bd7b7e320e07c4930
|
|
Change-Id: Iaf3361ed29dd552e5e52b62bc738fa20c6b583fe
|
|
Change-Id: I135a2ff4a419775169452be1128c7b30f7d638ad
|
|
Make sure old configs using "logging level lms <level>" are still accepted.
Initialization order of VTY componenets need to be resorted since newly
introduced command requires logging VTY node to be already setup
beforehand.
Change-Id: Ia195a74a62a8a3dd6267fb1359acaa5628208d8e
|
|
Change-Id: I4ec7accb1912c052b446be7c399bed32a8c62253
|
|
It will be used in later commits by radioInterfaceMulti.
Change-Id: Ie3caca8971ed1e5370dfed6fb60716a24e7d82a5
|
|
Change-Id: I11e853e11bec99fc88e81642f9b2cd87d5815398
|
|
Related: OS#3343
Change-Id: Icd328e85b0a75ef67f371a7ed72638053b1854f9
|
|
This code is not needed anymore since we are setting SCHED_RR scheduler
with a real time priority in main thread during startup, so all threads
will inherit same rt priority, which should be enough to keep the
process working reliably even on high system loads (from non rt
processes).
osmo-trx was tested to be reliable during test with stress-ng as
explained in related ticket below.
Related: OS#2344
Change-Id: I3a88946dd71e9aeeaac9d19d396e2236c302b608
|
|
After discussion in [1] and further look at the code, it became obvios
rx_underrun events are not happening in general for any SDR (don't
exist), so let's drop that counter. Instead, add Tx Dropped Packet counters,
which were not accounted prior to this commit.
[1] https://github.com/osmocom/osmo-trx/commit/bde55afd29fc9aae10eb11f6515821afa39b772d
Change-Id: Iff1535c219a4695a511d383d7c4b06ef6eff959d
|
|
Related: OS#3515
Change-Id: I3719bd8dc015569ecd81928fc079e27593cdca09
|
|
It was initially thought that underruns/overrun fields were
increasing-over-time values.
However, after reading LimeSuite code, it seems overrun and
underrun fields are actually reset upon every call to
LMS_GetStreamStatus().
Related: osmo-trx.git 928177125654c1e596ec3450a68882c031ebb929
Related: https://github.com/myriadrf/LimeSuite/issues/265
Change-Id: I677232a7b12ee83d26aa34d92f76a91d4b5a63a6
|
|
Change-Id: I19192925d008046f474615a0476b52ddee9a9d78
|
|
Introduce a unified implementation-agnostic interface for radioDevice to
signal SDR error counters to upper layers and manage them.
This patch only implements counters for osmo-trx-lms (other devices will
show all counters unchanged during time).
Sample use through VTY:
"""
OsmoTRX> show rate-counters
osmo-trx statistics 0:
device:rx_underruns: 0 (0/s 0/m 0/h 0/d) Number of Rx underruns
device:rx_overruns: 0 (0/s 0/m 0/h 0/d) Number of Rx overruns
device:tx_underruns: 0 (0/s 0/m 0/h 0/d) Number of Tx underruns
device:rx_drop_events: 4 (0/s 2/m 3/h 0/d) Number of times Rx samples were dropped by HW
device:rx_drop_samples: 513 (0/s 196/m 425/h 0/d) Number of Rx samples dropped by HW
"""
Change-Id: I78b158141697e5714d04db8b9ccc96f31f34f439
|
|
Existing code had a typo (value was assigned from wrong variable).
Furthermore, it was experimentally found that:
while underrun/overrun are documented as "FIFO overrun
count" in LimeSuite.h, it seems droppedPackets ("Number of dropped
packets by HW") is not actually an incrementing counter like the others,
but simply a value set every time LMS_RecvStream() is called. Since we
are actually interested in keeping the count over time, adjust code to
achieve that.
Change-Id: Id93d33400e11360b9536f56a31904328549cfbbf
|
|
Also take the chance to make sure we handle properly short reads (keep
reading again).
Both scenarios can be tested by running osmo-trx-lms and then using
on a terminal:
sudo kill -STOP `pidof osmo-trx-lms`; sleep 0.5; sudo kill -CONT `pidof osmo-trx-lms`
Fixes: OS#3339
Change-Id: Idfc4e69acc30afb11440b6b9cbdcfa09ff920265
|
|
Since in next commit osmo-trx-lms starts using smpl_buf.cpp, it seems
some automake step doesn't like including a cpp file twice from a
different directory, since race conditions can occur building it.
Instead we define the dependency by first building a static lib and then
using it on each libdevice.la (one per device type).
We already do the similar under arch/ subdir, where we have a common/
subdir and then one subdir and lib per architecture.
Change-Id: I465ad0f6d5569bb3006d711c8fd0df14391fcf35
|
|
Change-Id: I67d869499aa16af58c863ca7b74c356bcd979936
|
|
It's really not used, so let's drop unused code and simplify work for
new to come device drivers implementation.
Change-Id: I0d18f9c2584771e2f7b3d5c6b016e764e02855ff
|
|
Change-Id: I23554d95b0aff585024610fc12920c9da4f3ba9e
|
|
Change-Id: I2104205b2af7cd6c86075d5cc4f0f36bde5e5311
|
|
ALERT log level is not Osmocom standard level, it's just a define in
osmo-trx to keep compatibility with old code.
Same goes for one reference to "ERR" intead of "ERROR".
Change-Id: I0e171a8ac8a8bfa804ac97fba3d73efcfa6424b4
|
|
Change-Id: I8c6b1d3e8515153e5d4079cc6620901ef8ce2449
|