4/7 update:
*recvMsg4 is ok
*add 'always-on-transmission' functions, including: aotSsb, aotPdcchSib1 and aotSib1
*add UI pararmeters for CSI-RS configurations
(1) recvMsg4 implementation
Msg2 is similar to Msg4, except that:
*after sending Msg1 in uplink, UE monitor PDCCH during ra-ResponseWindow for DCI 1_0 scheduling Msg2
*after sending Msg3 in uplink, UE monitor PDCCH for DCI 1_0 scheduling Msg4 and contention resolution before ra-ContentionResolutionTimer expired
(2) 'always-on-transmission' functions
'always-on-transmission' including:
*SSB
*PDCCH occasions for SIB1 scheduling (Coreset0/Css0)
*SIB1
Example debug output for AOT(always-on-transmissions):
---->inside alwaysOnTr(hsfn=0,sfn=0)
---->inside initTddGrid(hsfn=0, sfn=0)
scaleTd=2 where baseScsTd=60KHz and tddCfgRefScs=30KHz
---->inside aotSsb(hsfn=0,sfn=0, scaleTd=2, scaleFd=2)
[AOT @ hsfn=0, sfn=0]issb=0, ssbFirstSc=360, v=0, ssbFirstSymb=4
[AOT @ hsfn=0, sfn=0]issb=1, ssbFirstSc=360, v=0, ssbFirstSymb=16
[AOT @ hsfn=0, sfn=0]issb=2, ssbFirstSc=360, v=0, ssbFirstSymb=32
[AOT @ hsfn=0, sfn=0]issb=3, ssbFirstSc=360, v=0, ssbFirstSymb=44
---->inside aotPdcchSib1(hsfn=0, sfn=0, dci="dci10",rnti="si-rnti", scaleTdSsb=2, scaleTdRmsiScs=2)
---->inside detCss0(hsfn=0, sfn=0)
[Type-0 CSS]PDCCH monitoring occasion for SSB [0_0_0](hrf=0, issb=0): [[(0, 0, 0), (0, 0, 1)], 0, ['OK', 'OK']]
[Type-0 CSS]PDCCH monitoring occasion for SSB [0_0_1](hrf=0, issb=1): [[(0, 0, 1), (0, 0, 2)], 0, ['OK', 'OK']]
[Type-0 CSS]PDCCH monitoring occasion for SSB [0_0_2](hrf=0, issb=2): [[(0, 0, 2), (0, 0, 3)], 0, ['OK', 'OK']]
[Type-0 CSS]PDCCH monitoring occasion for SSB [0_0_3](hrf=0, issb=3): [[(0, 0, 3), (0, 0, 4)], 0, ['OK', 'OK']]
[AOT @ hsfn=0, sfn=0]PDCCH scheduling SIB1 for issb=0(hrf=0): [[0, 0, 0, 0, 0]]
---->inside alwaysOnTr(hsfn=0,sfn=0)
[AOT @ hsfn=0, sfn=0]PDCCH scheduling SIB1 for issb=1(hrf=0): [[0, 0, 1, 0, 0]]
---->inside alwaysOnTr(hsfn=0,sfn=0)
[AOT @ hsfn=0, sfn=0]PDCCH scheduling SIB1 for issb=2(hrf=0): [[0, 0, 2, 0, 0]]
---->inside alwaysOnTr(hsfn=0,sfn=0)
[AOT @ hsfn=0, sfn=0]PDCCH scheduling SIB1 for issb=3(hrf=0): [[0, 0, 3, 0, 0]]
---->inside alwaysOnTr(hsfn=0,sfn=0)
---->inside aotSib1(hsfn=0,sfn=0)
contents of reservedPdcchSib1(key=[hsfn,sfn,issb],val=[hsfn,sfn,slot,firstSymb,pdcchCandidate])
key=0_0_0,val=[0, 0, 0, 0, 0]
key=0_0_1,val=[0, 0, 1, 0, 0]
key=0_0_2,val=[0, 0, 2, 0, 0]
key=0_0_3,val=[0, 0, 3, 0, 0]
[AOT @ hsfn=0, sfn=0]SIB1 corresponding to SSB#0(hrf=0)
contents of sib1DmrsSymbs(w.r.t to slivS): [0]
[AOT @ hsfn=0, sfn=0]SIB1 corresponding to SSB#1(hrf=0)
contents of sib1DmrsSymbs(w.r.t to slivS): [0]
[AOT @ hsfn=0, sfn=0]SIB1 corresponding to SSB#2(hrf=0)
contents of sib1DmrsSymbs(w.r.t to slivS): [0]
[AOT @ hsfn=0, sfn=0]SIB1 corresponding to SSB#3(hrf=0)
contents of sib1DmrsSymbs(w.r.t to slivS): [0]
Here is the new recvSib1:
def recvSib1(self, hsfn, sfn):
if self.error:
return (None, None, None)
self.ngwin.logEdit.append('contents of reservedSib1(key=[hsfn,sfn,issb],val=[hsfn,sfn,slotSib1]):')
for key,val in self.reservedSib1.items():
self.ngwin.logEdit.append('key=%s,val=%s' % (key, val))
qApp.processEvents()
dn = '%s_%s' % (hsfn, sfn)
if self.nrAdvBestSsb is None:
while True:
bestSsb = np.random.randint(0, len(self.ssbFirstSymbInBaseScsTd[dn]))
if self.ssbFirstSymbInBaseScsTd[dn][bestSsb] is not None:
break
else:
bestSsb = self.nrAdvBestSsb
#save bestSsb index for later ssb-prach mapping
issb = bestSsb % self.nrSsbMaxL
hrf = self.nrMibHrf if self.nrSsbPeriod >= 10 else bestSsb // self.nrSsbMaxL
self.bestSsbInd = issb
self.ngwin.logEdit.append('<font color=purple>bestSsb=%d(hrf=%d,issb=%d)</font>' % (bestSsb, hrf, issb))
qApp.processEvents()
key = '%s_%s_%s' % (hsfn, sfn, bestSsb)
if key in self.reservedSib1:
return self.reservedSib1[key]
else:
return (None, None, None)
Note: As a result of 'always-on-transmission', PDCCH occasions of CSS0/CORESET0 may not be enough for later Msg2/Msg4 scheduling.
(3) UI design for CSI-RS configurations
After receiving Msg4, UE may be configured in RrcSetup dedicated PUCCH settings/dedicated SR settings/CSI-RS settings/SRS settings:
CSI-RS only simulates NZP CSI-RS and CSI-IM: