5/3 update:
aotCsiRs is ok, including:
*transmission of periodic NZP-CSI-RS
*transmission of periodic CSI-IM
*transmission of periodic Tracking-RS(or TRS)
5/5 update:
*TRS periodicity should be slots40.
7/28 update:
*bugfix for NZP-CSI-RS row determination (thanks to @gmg2719)
add 'row' and 'bit string' to UI, rational is specified in 38.331--frequencyDomainAllocation IE:
frequencyDomainAllocation
Frequency domain allocation within a physical resource block in accordance with TS 38.211 [16], clause 7.4.1.5.3. The applicable row number in table 7.4.1.5.3-1 is determined by the frequencyDomainAllocation for rows 1, 2 and 4, and for other rows by matching the values in the column Ports, Density and CDMtype in table 7.4.1.5.3-1 with the values of nrofPorts, cdm-Type and density below and, when more than one row has the 3 values matching, by selecting the row where the column (k bar, l bar) in table 7.4.1.5.3-1 has indexes for k ranging from 0 to 2*n-1 where n is the number of bits set to 1 in frequencyDomainAllocation.
and now debug log will include validateNzpCsiRs status:
part of debug output for NZP-CSI-RS row selection:
#select 'row4'
-->inside validateNzpCsiRs
validateNzpCsiRsKiLi succeed: expectedRow="row4", bit-string="001", key="4_1_fd-CDM2", actualRow=4
#select 'row2'
-->inside validateNzpCsiRs
validateNzpCsiRsKiLi succeed: expectedRow="row2", bit-string="000000000001", key="1_1_noCDM", actualRow=2
#select 'row1'
-->inside validateNzpCsiRs
validateNzpCsiRsKiLi succeed: expectedRow="row1", bit-string="0001", key="1_3_noCDM", actualRow=1
#select 'other' and row=3
-->inside validateNzpCsiRs
validateNzpCsiRsKiLi succeed: expectedRow="other", bit-string="000001", key="2_1_fd-CDM2", actualRow=3
#select 'other' and row=5
-->inside onNzpCsiRsNumPortsCombCurIndChanged, index=2
-->inside validateNzpCsiRs
Warning: Row does not match! (expectedRow="other", actualRow=4, key="4_1_fd-CDM2")
validateNzpCsiRsKiLi succeed: expectedRow="other", bit-string="000001", key="4_1_fd-CDM2", actualRow=5
#select 'other' and row=6/7
-->inside validateNzpCsiRs
[2019-07-28 07:32:17]Warning: Invalid configuration: numKi=4 but numKiConf(frequencyDomainAllocation)=1!
validateNzpCsiRsKiLi failed: expectedRow="other", bit-string="000001", key="8_1_fd-CDM2", actualRow=6
[2019-07-28 07:32:17]Warning: Invalid configuration: numKi=2 but numKiConf(frequencyDomainAllocation)=1!
validateNzpCsiRsKiLi failed: expectedRow="other", bit-string="000001", key="8_1_fd-CDM2", actualRow=7
-->inside validateNzpCsiRs
validateNzpCsiRsKiLi failed: expectedRow="other", bit-string="000011", key="8_1_fd-CDM2", actualRow=6
validateNzpCsiRsKiLi succeed: expectedRow="other", bit-string="000011", key="8_1_fd-CDM2", actualRow=7
-->inside validateNzpCsiRs
validateNzpCsiRsKiLi succeed: expectedRow="other", bit-string="001111", key="8_1_fd-CDM2", actualRow=6
(1) aotCsiRs is added to alwaysOnTr:
if self.msg4Recved:
if not self.error:
self.aotCsirs(hsfn, sfn, slot)
if not self.error:
self.aotSrs(hsfn, sfn, slot)
(2) Transmission of NZP-CSI-RS and TRS
TRS is kind of nzp-csi-rs except that TRS always uses: single port with no CDM and density=3 and periodic TRS doesn't need CSI report.
Procedure to determine :
#refer to 3GPP 38.211 vf40
#Table 7.4.1.5.3-1: CSI-RS locations within a slot.
#determine ki (k0, k1 etc)
ki = []
pos = -1
while True:
try:
pos = self.nrNzpCsiRsFreqAlloc[::-