protobuf-c does not compile anymore.
Let's handle this a bit better.
We now install protobuf and protobuf-c only for the
flexran agent. That is, if you want to use the flexran
agent, you need to install protobuf/protobuf-c and
you do it this way:
./build_oai -I -a
(you add -a)
Other targets don't need protobuf nor protobuf-c, so
it's not installed by the -I command of build_oai,
unless you pass -a with -I.
Also, we now use protobuf 3.3.0, not 2.6.1. The code
has been adapted, a quick test seems to indicate that
the system works, but it has not been intensively tested.
This bug happens when we detect uplink failure for one UE.
In this case, a DCI format 1A is sent to the UE to ask it
to do random acces.
The way this DCI is generated was not compatible with how
the software is organized. It was expected that the DCI are
added (with add_ue_spec_dci and add_common_dci) in a very
specific order: first all DCIs in common space are added
(with add_common_dci) then all DCIs in UE specific space
are added (with add_ue_spec_dci).
The problem was that the DCI format 1A DCI sent to the UE
for it to do random access is added (with add_ue_spec_dci)
before the DCIs in common space.
That totally messed up the logic in add_common_dci and
add_ue_spec_dci.
The solution is to get rid of Num_common_dci and Num_ue_spec_dci,
replace those two counters by only one (Num_dci) and add
"search_space" in the dci_alloc structure to be used later by
the function "allocate_CCEs" when calling "get_nCCE_offset".
The software had to be adapted to the new variables, everywhere.
I am not sure that the simulators work. It seems that some
of them didn't use Num_common_dci and Num_ue_spec_dci to
decide on what space (common or UE specific) to put the DCI,
but relied on the rnti (comparing with SI_RNTI). To be tested
properly.
The modified simulators are:
- openair1/SIMULATION/LTE_PHY/dlsim.c
- openair1/SIMULATION/LTE_PHY/dlsim_tm4.c
- openair1/SIMULATION/LTE_PHY/dlsim_tm7.c
- openair1/SIMULATION/LTE_PHY/framegen.c
- openair1/SIMULATION/LTE_PHY/pdcchsim.c
- openair1/SIMULATION/LTE_PHY/syncsim.c
- 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
It seems that ciphering_algorithm is "unsigned int" in RRC Rel10
and "unsigned long" in RRC Rel14 (as processed by asn1c)
Let's force it to unsigned long in the log to avoid compilation-time
warnings.
Seems like this commit got lost at some point.
Here was the message:
-----------------------------------------------------------------------------
Author: Cedric Roux <cedric.roux@eurecom.fr>
Date: Tue Jan 10 14:21:02 2017 +0100
add format indicator to get LOG_X warnings
The LOG_X macros emit a lot of warnings when compiling with the T
because they call the function logRecord (or logRecord_mt)
which has not been "marked" as calling printf, so gcc won't
emit typical printf warnings.
With the T, they directly translate to sprintf, so those warnings
pop up, much more verbose due to several macro expansions.
Let's make them pop up all the time so it's easier to fix them.
-----------------------------------------------------------------------------