Also, remove m_ldpc and m_stbc, as they can be obtained via
the VHT capabilities, and m_shortGuardInterval, m_streams and m_greenfield,
as they can be obtained via the HT capabilities.
That's bad, usually the test must be reworked to not fail the assert.
However, there's no time in fixing a decade-old test, and also the code
worked like this since... forever. My fault was to add the assert in the first
instance, thinking that it would be a good service to the users. I was wrong.
This reverts commit 50cfb45bd1, reversing
changes made to ae2f33cf73.
The commit is faulty because it does not consider LTE HARQ timings.
So, in LTE, would happen that a packet is delivered even in the case that the
previous packet is under HARQ retransmission.
We will check the standard and see what does apply in this case.
Natale
If we update the window and THEN we try to reassemble the PDU,
the frame that at the beginning (I mean the frame thanks to which we entered
the if) was inside the window can be "magically" outside, therefore in
the reassembly function, that segment is not delivered.
When the timer expires, everything is then delivered correctly, but waiting
the timer adds 10 ms of unwanted delay.
* lte-nr-prereq-v2:
spectrum: Add API to retrieve Values size and a single value at any position
lte: Managing SR at SAP interface level.
lte: Making SimpleUeComponentCarrierManager inheritable
lte: Do not assume that the helper is setting all the vectors
lte: ComponentCarrier subclasses can override Set{Dl,Ul}Bandwidth
lte: ComponentCarrier with cellId is now ComponentCarrierBaseStation
lte: LteMacSap constructors for ReceivePduParameters and TxOpportunityParameters created
lte: (fixed#2893) GetPgw in helpers must be const
lte: EpsBearer support run-time switching between Rel. 11 and Rel. 15
lte: Added EpsBearer new values (updating it to Rel. 15)
lte: EpsBearer uses a lookup table
Values are stored as std::vector of double, but this vector can't be accessed,
even read-only. With this addition, it is possible to know how many elements
are inside the vector, and also to get a const reference to any element.
SR is implemented in the NR module; for the moment, just add the possibility at
the interface level. LTE module will not do anything for the moment, waiting for
a feature addition at a later stage.
In lte-enb-rrc, in a lot of places there is the assumption that
vectors such as m_cphySapProvider, m_cmacSapProvider, m_ffrRrcSapProvider, are
filled by the helper.
That assumption does not hold with external modules: therefore, for a better
coexistence, check the size of these vector before doing any operation.
If there are elements in it, then execute; otherwise, just ignore.
For the NR module we have the necessity of implementing a different type of
ComponentCarrierEnb, which will be ComponentCarrierGnb. But, in some methods of
RRC, it is accepted only a pointer to ComponentCarrierEnb.
To solve this situation, since the only needed method from ComponentCarrierEnb
is GetCellId (), this commit creates a new class (ComponentCarrierBaseStation)
that provides the interface for setting and retrieving the cell id. Then, both
ComponentCarrier{Enb,Gnb} derives from ComponentCarrierBaseStation and everyone
is happy. I had to introduce DynamicCast all over the helper to make everything
working.
Thanks to constructors, it is easier to create these structs. In particular, code like this
MyAwesomeStruct x;
x.value = 10;
x.another = 200;
...
AMethod (x);
can be replaced with
AMethod (MyAwesomeStruct (10, 200));
Reducing the amount of needed lines.