Age | Commit message (Collapse) | Author | Files | Lines |
|
multi-arfcn feature uses a hardcoded disposition of logical channels on
a physical channel. Logical channels in the phisical channel are
separated by MCBTS_SPACING Hz, that is 4 GSM ARFCNs.
As a result, multi-arfcn restricts the TRX ARFCN setup to the following:
ARFCN(TRX0)=N, ARFCN(TRX1)=N+1*4, ARFCN(TRX2)=N+2*4, ...
Let's make sure radioInterfaceMulti verifies the requested Rx/Tx
frequencies for each logical channel over TRXC match the restriction
explained above. It will check freq going to be set is indeed separated
by MCBTS_SPACING from already set channels, making sure the ARFCN series
is consistent.
Otherwise, before this patch, one could set in osmo-bsc:
ARFCN(TRX0)=N, ARFCN(TRX1)=N+2
and osmo-trx would silently ack the related Rx/TxTUNE TRXC commands, but
actually still transmit on ARFCN N+4 instead. As a result, in this
scenario TRX!=0 were unusable with multi-arfcn.
Related: OS#4207
Change-Id: I2f3d66a611d3a489b3e4d9431994f4ec77b4460f
|
|
Change-Id: If5aba28aaf8a3312d89b3e963184f9f20966d199
|
|
Change-Id: I36f1ff7d425a2144fb512ff393af02741eb4a3d4
|
|
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
|
|
Take the chance to clean up logging lines in this file:
* Use LOGCHAN in more places where chan is useful
* Replace inherited (old osmo-trx) categories such as WARNING with
osmocom ones.
Change-Id: Ic8c218f050f35d48046ccf1561fb0bfc505d4f63
|
|
Change-Id: I4568eaed6db3da12f83f2f503a50032f7bfb482c
|
|
Change-Id: Ifeea65a359e9ca307efb2c721fd0fb6f0959e976
|
|
Change-Id: I9d3f120b1696a9ce92c81097d04e81dbb717287d
|
|
In the command line options time, filler table/filer burts settings
were a bit difficult to undertand because the number of one-letter
settings was limited. Now, with VTY configuration, there is no reason
to keep it so difficult.
Also, after the previous commit it was no longer posible to enable
random 8-PSK filler bursts. With this patch you can configure all
supported filler bursts in a simple and logical way.
Change-Id: I752eb2c1162d084e8769181f2fcd6c0877663448
|
|
Change-Id: I4ec7accb1912c052b446be7c399bed32a8c62253
|
|
Since libosmocore Id7711893b34263baacac6caf4d489467053131bb, a new API
log_enable_multithread() is available which takes care of protecting
logging infrastructure from us (and actually does it correctly since we
cannot protect internal libosmocore structures from osmo-trx).
Let's drop all mutex related code from osmo-trx logging infra and simply
rely on libosmocore's.
Related: OS#4088
Change-Id: I519d0f30bce871005ca26b90177ea4aa4839360a
|
|
Change-Id: I7b89426e5d7d5e7570d4ef800a30c7b74bd09b82
|
|
Otherwise, it could happen that underrun events are lost:
TxLower (isUnderrun): RxLower (pullBuffer):
read(underrun)
read(underrun)
write(underrun, |val) [maybe underrun becomes TRUE]
write(underrun, false)
Similary, it could happen the other direction if atomic was only applied
to isUnderrun:
TxLower (isUnderrun): RxLower (pullBuffer):
read(underrun) -> true
read(underrun)-> true
write(underrun, false)
write(underrun, true|val) where val=false
So in here isUnderrun would return true twice while it should only
return one.
Change-Id: I684e0a5d2a9583a161d5a6593559b3a9e7cd57e3
|
|
This way switch is applied correctly to parent structures and features
can be used later by other children classes (other devices).
Change-Id: I24d6c66bb3195ba2513b4a67daa14cdfbacdce6d
|
|
Otherwise the parent function is always called even if the iface is
radioInterfaceMult.
Change-Id: Ie41efab1e60b88677bbd1ec333ea656794503a5a
|
|
In multi arfcn mode, osmo-trx would drop some bursts because it couldn't detect it
and would emit idle burst instead. Specificaly detection of peak in correlation
vector failed. Correcting copying of history in pullBuffer method fixes this issue.
[Re-worked by Pau Espin Pedrol <pespin@sysmocom.de>]
Fixes: 57df2362f0eca0a330aad3e18906046dfadb9c8b
Change-Id: I93e43f6868cd67e69fc59d2980a03550d2505bf8
|
|
from readSamples()
The only who should be setting class instance value "underrun" to false
is isUnderrun().
Similar fixes were already applied lately to radioInterface.cpp.
Change-Id: I3239b1df4536c080365106b3e4daa523b57f5dff
|
|
After previous changes, radioInterfaceMulti is expected to handle channel
conversion correctly, so it will always use chan 0 for all these
functions. This simplifies code in radioDevice avoiding need to add
checks to all devices supporting multi-arfcn in the future.
Change-Id: Ib2cd50a6ceaeedc6aaf3e1bb51d33b52911b6eba
|
|
Change-Id: I7e67f660c3b0b009db59b405de603f6058021802
|
|
It will be used in later commits by radioInterfaceMulti.
Change-Id: Ie3caca8971ed1e5370dfed6fb60716a24e7d82a5
|
|
Only the radioDevice->getRxGain() is called from inside
radioInterfaceMulti, so the API in radioInterface is not used at all.
Change-Id: Icc4e9a7ebfdafe7c72c535752a5e379d12592c9a
|
|
Change-Id: I11e853e11bec99fc88e81642f9b2cd87d5815398
|
|
Change-Id: I0d8fd51586ef01141d4e5896f0fc3029a22743f8
|
|
field rxGain is set to 0 during constructor and never set after that
point.
Change-Id: I7fae7a315e5ab98a15c27628a88a92226ef89469
|
|
It's not a pointer check or a boolean expression, in here we really
check chan index is 0, so it's more clear doing so this way like it's
done in all other places.
Change-Id: I83b14487d14ba8272f58796f640f58a88891e532
|
|
Previous naming is ready confusing, because "Radio" is actually the
common term between radioInterface and radioDevice, and it looks like
it's referring to radioInterface rather than radioDevice. On the other
hand, mDevice cleary states it refers to the radioDevice item.
Change-Id: I708bb1992a156fb63334f5590f2c6648ca27495e
|
|
BTS may have any timeslot disabled, or may have not yet sent initial
SETSLOT cmd to properly configure the timeslot.
Change-Id: Icf62e5d1200c7a440f255bb46023cdbf61532b7f
|
|
Change-Id: Ia0f2b5a51040663d7e8219e6ed51e0513b876548
|
|
Change-Id: I4f180cc852582b131ba28a8139215335f7ba567d
|
|
Change-Id: Iec33ab73a9bf90fd0bff9ba453c32ea11bf0670e
|
|
Since tn is declared as uint8_t, it's actually a char, and by default
c++'s ostream& operator<<(ostream&, unsigned char) tries to print chars
with its ASCII visible character instead of numeric value.
Change-Id: I534158e8e1719ad19a9cde7c747a8f8ad5a01a2b
|
|
Change-Id: I3099498e3a3f26b53d55a96a36cc056f7b25b27a
|
|
Related: OS#3343
Change-Id: Icd328e85b0a75ef67f371a7ed72638053b1854f9
|
|
Related: OS#3664
Change-Id: Id16248a1c03f9bc9f323c707857cdf3bf34c4e3e
|
|
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
|
|
Use a packed structure to clearly indicate what is contained in the
received buffer.
Change-Id: I4d8c0e3c0c717699889f79e50c778d14b6058f2d
|
|
No need to continue further since anyway we'll end up exiting.
Change-Id: Id8b38b40df5744beb705d560defb06532cf0fd44
|
|
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
|
|
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: b9d2515704ac83cacd88d0a73ecba30323df0b2d
Change-Id: I67ddf550f3a7fc6a650e1e1d9bde0bbb28785104
|
|
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
|
|
Change-Id: Icccc18688ee54e669cf3452b08747b3509042fa2
|
|
Change-Id: Ib5a56cfe0c27d027bc0c60abda89e646a80849de
|
|
Change-Id: I15b687fbf436d662b264cb00f72b367ccd64b962
|
|
Change-Id: I4d6ef1f54f3d6c5a73ce00dc4640bd698f96842b
|
|
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
|
|
The pointer can't never be null, so avoid checking it.
Change-Id: I12e14641713a6494bc89570f02cecfc6f8fd4b5e
|
|
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
|