Finish the work of GSoC 2019 on the 3GPP channel modeling.
There are still some issue left, they are described in the Sphinx module
documentation.
* gsoc-2019-tommaso:
Integration of the 3GPP TR 38.901 fast fading model (GSoC 2019) (2/2)
In particular, this commit contains:
* a new abstract class ChannelConditionModel, which provides the base for the
implementation of specific channel condition models. The main method is
GetChannelCondition (mm a, mm b), which determines the channel condition
based on the tx and rx mobility models and returns it as a pointer to an
object of type ChannelCondition
* the implementation of the subclasses ThreeGppRMaChannelConditionModel,
ThreeGppUMaChannelConditionModel, ThreeGppUMiStreetCanyonChannelConditionModel,
ThreeGppIndoorMixedOfficeChannelConditionModel,
ThreeGppIndoorOpenOfficeChannelConditionModel, which inherits from
ChannelConditionModel and statistically determines the LOS/NLOS state based on
the specification in 3GPP TR 38.901
* the implementation of the subclass BuildingsChannelConditionModel, which
inherits from ChannelConditionModel and determines the LOS/NLOS state based
on the buildings deployed in the scenario. It has been adapted from the
mmwave module.
* new classes which extends the PropagationLossModel interface and implements
the pathloss models defined in 3GPP TR 38.901
(ThreeGppRmaPropagationLossModel, ThreeGppUmaPropagationLossModel,
ThreeGppUmiStreeCanyonPropagationLossModel,
ThreeGppIndoorOfficePropagationLossModel). The main method is DoCalcRxPower
(txPow, mm a, mm b), which applies the pathloss model taking into account the
LOS/NLOS channel state and then returns the received power. To retrieve the
channel state, they interface with the class ChannelConditionModel through
the method GetChannelCondition (mm a, mm b)
* documentation and test cases for all the new classes
Right now, there is no way of extracting e2e statistics without using flow monitor. This patch enables, with an attribute, the possibility of adding a particular header to the outgoing packets, that will be read from PacketSink. The header contains Sequence, Size, and Timestamp, and therefore at the reception, it is possible to measure throughput and per-packet delay.
The new class can be used as a C++ interface towards the SQLite library. It
should support all the major version of the library. The idea is that
developers, instead of using the <sqlite.h> header directly (which is C, and
difficult to manage) have at their disposal a C++ framework which already
includes some primitive form of concurrency handling (with spinlocks or system
locks).
Merge branch 'sqlite-stats-dev'
* sqlite-stats-dev:
stats: SqliteDataOutput uses SqliteOutput as backend
stats: Added sqlite output interface