Several problems are present.
The first is that _write returns 0 instead of the
number of samples. We solve it by returning
nsamps.
The second is that _read may return less samples at
the beginning and we don't want to exit for that.
We solve it also by returning nsamps.
(We still need to log more in this, to be done in the
next commit.)
The third is that after initialization we don't send
anything for a while, time for the softmodem to finish
its init. This generates lots of "RX overrun".
We solve it by disabling TX and RX modules after init
and then in trx_brf_start we activate them again (and
also call bladerf_sync_config, which seems to be
mandatory, and bladerf_calibrate_dc, which may be avoided,
perhaps).
Maybe not the end of the story. Sometimes it works, UE connects,
traffic is fine (tested only with 5MHz). Sometimes it does not,
UE does not connect, or it connects but then traffic is bad,
especially uplink.
To be refined.
- rename UE_NO_LOG to DISABLE_LOG_X
because the name is misleading. The full software
is impacted, not only the UE part
- same for compilation option ---ue-no-log
that becomes --disable-log
- keep LOG_X for the standard case, that is the
case without DISABLE_LOG_X where printf has been
put. Two reasons:
* printf is not realtime friendly
* keep behavior similar for other users who may
be troubled by different logs that don't add
any benefit to previous logs
- print current working directory
- print git version (if available)
- print security keys
this last one is a security breach, but as of today
it's not a problem
----------------------------------------------------------
bug 18
Ttile:
Probably he/she wants to copy the contents of arrays, but
this coding doesn't copy anything, moreover index overflow
occurs.
Bug Location:
u2e_t[UE_id][eNB_id]->tx_data[3]=tx[eNB_id][3];
u2e_t[UE_id][eNB_id]->rx_data[3]=rx[NB_eNB_INST+UE_id][3];
Note:
Detected by CppCheck
----------------------------------------------------------
bug 19
Title:
Probably he/she wants to copy the contents of arrays, but
this coding doesn't copy anything, moreover index overflow
occurs.
Bug Location:
e2u_t[eNB_id][UE_id]->tx_data[3]=tx[NB_eNB_INST+UE_id][3];
e2u_t[eNB_id][UE_id]->rx_data[3]=rx[eNB_id][3];
Note:
Detected by CppCheck
----------------------------------------------------------
bug 20
Title:
Probably he/she wants to copy the contents of arrays, but
this coding doesn't copy anything, moreover index overflow
occurs.
Bug Location:
tx_data[3]=cthread->tx_data[3];
rx_data[3]=cthread->rx_data[3];
Note:
Detected by CppCheck
----------------------------------------------------------
Using "system" to call "git log" is too error-prone.
In the test setup, lte-softmodem was blocked because
"git log" uses a pager ("less") and the pager was
waiting for the user to press enter.
We could pass "--no-pager" to "git log" but then
what if someone runs the softmodem out of the source
tree?
cmake defines PACKAGE_VERSION, we can use that instead,
as is done in openair-cn.
We have a strange problem with the timestamp of the very
first packets received from the LimeSDR that leads to
a complete failure of the eNB.
A simple workaround is to discard the first RX packet
just after a "start" of the device.
We also change the value of "tx_sample_advance" to a more
reasonable value. The problem of timestamp was "solved"
differently in the past and at the time we needed to put
a much higher value.
This may have to be refined at some point.