We don't want to keep osmo-trx running in a started state once the BTS
controlling it becomes unavailable. If a socket towards the BTS fails,
it means the BTS is gone and the best thing to do is to stop the process
(alternatively we could go back to stopped state instead, and wait for
BTS to re-connect, fur so far this action is good enough).
Related: OS#4170
Change-Id: I2ccbe3c17b39fb792ea7810f840235c348054d66
pullRadioVector() should return true on idle frames because those
indications may be handled by upper layers (TRXDv1). Clarify return code
in function documentation.
Change-Id: If592ed1c04cf7e995f656b313f60edd4d40d1bfd
If osmo-trx is started and IP addr binding fails (ie because the IP
address is not assigned in the system), it will try to access a
heap-allocated Thread instance which was not initialized (because init()
function returned earlier).
Fixes: OS#4147
Change-Id: I19f9745cd026c0ff6581895a66bf91b40113b07d
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
Since osmo-trx it's a big multithreaded process and shutdown sequence
can be complex, better use stderr to log signal received events to make
sure log is outputted straigh away and not buffered. In general stdout
is usually line-buffered, but buffering strategy can be more
conservative if output is for instance redirected to a file.
Change-Id: I70ba86919d1f7df41ef3db4916317d27697a025c
Older commit started using osmo_timerd_* APIs which are only available
starting libosmocore 0.12.0, but configure.ac still states 0.11.0 is
accepted, which is incorrect.
Fixes: 4456b6f132
Change-Id: I71743b8a10edb10af51ad8e9289c53e432199b97
Previous commit started using IPPROTO_UDP without including required
include. Newer versions of libosmocore's osmocom/core/socket.h include
that header so the define is present, but older versions of libosmocore
(such as 0.12.0) don't, so let's include it explicitly (the correct
thing to do).
Fixes: b9d2515704
Change-Id: I67ddf550f3a7fc6a650e1e1d9bde0bbb28785104
Previous content in README file is actually a description of the TRXD
and TRXC protocols, and it has already been moved to the User Manual
some time ago. INSTALLATION contained README related information, but it
was really out of date.
So this commit basically drops those two files and provides a new
README.md with content taken from Osmocom's OsmoTRX project wiki page.
Change-Id: I3df00799ce80aa4af43225e69a408ba2cbc444db
This file is only used by USRP1, so let's move it there and avoid
processing it in Makefiles if build for USRP1 is not requested at
configure time.
Change-Id: Ibb40ba487581e76d2ae3e8a420d631670f876cf0
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] bde55afd29
Change-Id: Iff1535c219a4695a511d383d7c4b06ef6eff959d
When submitting patches to osmo-trx in gerrit, sometimes the jenkins job
fails due to libusrp failing to build. I never have this issue in on my
workstation.
Let's disable parallel make and see if we can avoid it for now.
Related: OS#3970
Change-Id: I24bc54f5872e8edb9fab5b88055a00cebe1a6911
The underrun parameter in radioDevice's readSamples() is not a "Rx
Underrun" event, but rather it's used to retrieve a "Tx Underrun" which
on some SDRs (like USRP1) seems to be (so far) available only at
readSamples() times.
Thus, underrun parameter for both readSamples() and writeSamples() is
actually flagging the same event, and should be ORed in pushBuffer() as
it's already done in pullBuffer(). Otherwise if implementation is
setting the underrun pointer to false, it could erase the flag being
marked by the counterpart function before isUnderrun() is called (which
is the one responsible to clear the flag).
Change-Id: Id549489fc1485e0d762818c8e682aaddd5041f1c
We already have debian/changelog for same purpose. This file is empty
and doesn't exist on other osmocom projects.
Change-Id: I5a90107476ca116bebc8569f4eb1db0fa25807a6
TransceiverChannel naming was misleading there. It's simply a data type
used to pass 2 parameters through the void* of the thread entry
function, so let's clearly specify is a storage for thread params.
Furthermore, we don't need a full C++ class for that, let's simply use a
struct.
Change-Id: I6e3898a8a66520cc5b2a7df9b9ae01b0b272387f
The setting is negotiatied by osmo-bts-trx on each channel, so let's
keep and use state per channel instead of overwriting the state from
different channels.
Take the chance to change related log lines to also print the channel
number.
Change-Id: If9cf95e89d38d0155ab48b8c0977ca5f381c2aad
The header version field is 4 bit long, so the mask 0x07 == 0b111
is wrong, it should actually be 0x0f == 0b1111.
Change-Id: I290931559ce01cf6e43470b18855c46808d6c2a5
Doing so should make Coverity happy:
>>> CID 200212: Uninitialized members (UNINIT_CTOR)
>>> Non-static class member "mExtRACH" is not initialized in this constructor nor in any functions that it calls.
The current status is actually harmless since the field will be set
during init() time, and the variable is never used before init() is
called.
Fixes: Coverity CID#200212
Change-Id: I17286570a9a6db695a75147e5cbb18c9da7d0fe6
Only old v0 is supported so far. TRXD protocol related data/logic is
moved to its own file out of Transceiver class. Code is refactored so it
can be re-used later by TRXDv1.
Related: OS#4006
Change-Id: I5786dd44b076202c6f1a6e82405670e8605797ed