[OAI-UE] several fixes in OAI-UE
1- implement max harq retrans
2- bug in harqId > 1 for dci format 1A
3- wrong G computation
4- bug in harq UL for scheduling flag
5- initial sync, limit freq offset to 150Hz
See merge request !11
1- implement max harq retrans
2- bug in harqId > 1 for dci format 1A
3- wrong G computation
4- bug in harq UL for scheduling flag
5- initial sync, limit freq offset to 150Hz
The independent retransmission of TB1 will take data from the last PUSCH
report, when both TB were active and keep it for all the retransmission
rounds.
Now the TPMI for the retransmissions of TB1 is passed from the command
line with -K(tpmi): -K0 for Alamouti, -K5 for PUSCH column1 , etc.
- add progess bar report
- reduce ssh max_tries to 10
- cleanOldPrograms -> change kill cmd line to be able to run autotest on same machine than lte-softmodem (thanks Rohit & Gabriel)
- Cleanning output prints
- add --skip-machine-preparation on cmd line
- add --skip-sanity-check on cmd line
- add HTML REPORT (no-S1 only)
- add XML detailled report (no-S1 only)
The PHICH generation is wrong.
HARQ process X is uplink scheduled at TTI n.
At TTI n+4 the eNB receives the data.
At TTI n+8 the eNB sends ACK/NACK on the PHICH.
The problem is that PHICH generation is done after scheduling.
And PHICH generation uses "first_rb" and "n_DMRS" to compute
"ngroup_PHICH" and "nseq_PHICH".
So at TTI n+8 if the eNB has reused the HARQ process X for
a new uplink scheduling the values "first_rb" and "n_DMRS"
may have changed.
We need to use the previous values.
One solution would have been to do PHICH generation before
scheduling. The problem is that "generate_phich_top" does more
than PHICH generation. It has to setup parameters to sort of
"emulate" a DCI0 in case of retransmission scheduled without
DCI0. So part of it has to be done after scheduling. We would
have to split the function.
The simple adopted fix is to store old values of "first_rb"
and "n_DMRS" and use those values in "generate_phich_top".
This fix has only been tested with FDD. TDD may miserably fail.
The case of a CRC == 0 is legal.
After discussion with Raymond, it is also possible to have all
bits at 0 (and so a CRC==0) if there is no transmission and thus
not much energy.
So this hotfix may introduce new problems (false decoding).
A future work is to handle this case properly by not calling the
turbo decoder if there is not enough energy received.
The problem might manifest itself more in the UE part, especially
when it tries to decode MIB and/or SIB (if I understood correctly).