Whenever the value T_BUFFER_MAX changes, the tracers had to
be recompiled. The only reason why it was needed is because we
used some fixed size buffers to read events. This commit removes
this restriction.
Also, with the basic simulator, this value T_BUFFER_MAX now comes
with an #ifdef which would have required some special hackish-level
tricks in the tracers, which is not good.
Let's just allocate memory when needed.
This tracer extracts the content of a buffer field of an event
that was previously saved using the tracer 'record'.
For example, to extract the channel estimation done in
frame 924 and subframe 2 as saved in the file input_record.raw
and to store it in the file output.raw, do:
./extract -d ../T_messages.txt -o output.raw input_record.raw ENB_PHY_UL_CHANNEL_ESTIMATE chest_t -f frame 924 -f subframe 2
- UE_id 0 is for rnti 65535 (sib)
- UE_id 1 is for rnti 65534 (this is a hack)
- UE_id 2 is for rnti 2 (RA RNTI as of today's code/config)
- we start enb by displaying UE_id 3
- there was a bug: we need to lock when resetting UE ids (reset_ue_ids)
Normally it is used to display throughput.
The computation it does is to sum up the wanted value for the last
second (1000 TTIs) and send this value to the views associated to
this logger, at each TTI.
- change paint function:
when the XY plot is resized we scale. Previously
the last range was put in the middle of the new range
(say when we increase the size).
We may get aspect ratio changes if the resize is not identical
vertically and horizontally, but I think this behaviour is more
'natural'.
- fix a bug:
the last horizontal tick label was printed to far on the right,
out of the bouding box of the XY plot. This is not totally fixed
in the case the label is larger than the XY plot. Now the part
out of the bounding box will be printed on the left. No big deal,
make the plot big enough. (Before, even if big enough you had a
problem.)
- add a new vertical tick display, to be used for throughput mostly.
See in enb.c the difference between 'input signal' and throughput
plots (those throughput plots will come in later commits).
The problem was visible when DL MCS was set to 20
(do a ping -c 192.172.0.1 -i0.2 to get it). The dots
were not plotted at the exact line of the tick mark.
Not sure the fix is always correct.
No big deal anyway.
A new logger is there: the "ticked TTI logger".
Similar to TTI logger (used by the PUCCH1 energy plot)
but takes another input, the "tick" (think subframe)
and a default value for when no event is triggered between
two ticks.
This is used for the UL and DL MCS plots in enb.c (next commit).
When the user clicks on "next UE" or "prev UE" we change the
filters of loggers.
At the same time, the main thread of enb.c processes events
received from the soft-modem and uses the filters, some of them
maybe in the process of being changed.
Changing the filters is not atomic and has to be protected.
Just below the logo you see the current UE, eg. [UE 0],
and near that you have two "buttons" [prev UE] and [next UE].
You click with left button of mouse on those and the various
plots that depend on the UE are now done for the new UE (say UE 1
instead of UE 0 if you click on [next UE]).
The plots are not cleared when you switch.
Let's say it's a feature.
This tracer takes the traces ENB_MAC_UE_DL_PDU_WITH_DATA
and ENB_MAC_UE_UL_PDU_WITH_DATA from a trace file
(as generated by the "record" tracer) and sends them
in UDP packets correctly formatted for wireshark to
dissect them.
One unresolved problem I face with my version of
wireshark (1.10.6) is that I don't get the frame number,
only subframe. See in the code to change the behavior
if you use a more recent version of wireshark.
You need to properly configure wireshark for it to work.
See $OPENAIR_DIR/openair2/UTIL/OPT/README.txt.