Commit 5cfa5ad6 authored by francescomani's avatar francescomani

fixes for multiple BWPs

parent 032879c0
...@@ -181,6 +181,11 @@ void nr_csi_meas_reporting(int Mod_idP, ...@@ -181,6 +181,11 @@ void nr_csi_meas_reporting(int Mod_idP,
AssertFatal(csirep->reportConfigType.choice.periodic, AssertFatal(csirep->reportConfigType.choice.periodic,
"Only periodic CSI reporting is implemented currently\n"); "Only periodic CSI reporting is implemented currently\n");
const NR_PUCCH_CSI_Resource_t *pucchcsires = csirep->reportConfigType.choice.periodic->pucch_CSI_ResourceList.list.array[0];
if(pucchcsires->uplinkBandwidthPartId != ul_bwp->bwp_id)
continue;
int period, offset; int period, offset;
csi_period_offset(csirep, NULL, &period, &offset); csi_period_offset(csirep, NULL, &period, &offset);
const int sched_slot = (period + offset) % n_slots_frame; const int sched_slot = (period + offset) % n_slots_frame;
...@@ -188,9 +193,8 @@ void nr_csi_meas_reporting(int Mod_idP, ...@@ -188,9 +193,8 @@ void nr_csi_meas_reporting(int Mod_idP,
// preparation is done in first slot of tdd period // preparation is done in first slot of tdd period
if (frame % (period / n_slots_frame) != offset / n_slots_frame) if (frame % (period / n_slots_frame) != offset / n_slots_frame)
continue; continue;
LOG_D(NR_MAC, "CSI reporting in frame %d slot %d\n", frame, sched_slot); LOG_D(NR_MAC, "CSI reporting in frame %d slot %d CSI report ID %ld\n", frame, sched_slot, csirep->reportConfigId);
const NR_PUCCH_CSI_Resource_t *pucchcsires = csirep->reportConfigType.choice.periodic->pucch_CSI_ResourceList.list.array[0];
const NR_PUCCH_ResourceSet_t *pucchresset = pucch_Config->resourceSetToAddModList->list.array[1]; // set with formats >1 const NR_PUCCH_ResourceSet_t *pucchresset = pucch_Config->resourceSetToAddModList->list.array[1]; // set with formats >1
const int n = pucchresset->resourceList.list.count; const int n = pucchresset->resourceList.list.count;
int res_index = 0; int res_index = 0;
...@@ -769,6 +773,9 @@ void extract_pucch_csi_report(NR_CSI_MeasConfig_t *csi_MeasConfig, ...@@ -769,6 +773,9 @@ void extract_pucch_csi_report(NR_CSI_MeasConfig_t *csi_MeasConfig,
uint8_t li_bitlen = 0; uint8_t li_bitlen = 0;
uint8_t pmi_bitlen = 0; uint8_t pmi_bitlen = 0;
NR_CSI_ReportConfig_t *csirep = csi_MeasConfig->csi_ReportConfigToAddModList->list.array[csi_report_id]; NR_CSI_ReportConfig_t *csirep = csi_MeasConfig->csi_ReportConfigToAddModList->list.array[csi_report_id];
const NR_PUCCH_CSI_Resource_t *pucchcsires = csirep->reportConfigType.choice.periodic->pucch_CSI_ResourceList.list.array[0];
if(pucchcsires->uplinkBandwidthPartId != ul_bwp->bwp_id)
continue;
int period, offset; int period, offset;
csi_period_offset(csirep, NULL, &period, &offset); csi_period_offset(csirep, NULL, &period, &offset);
// verify if report with current id has been scheduled for this frame and slot // verify if report with current id has been scheduled for this frame and slot
......
...@@ -452,7 +452,7 @@ uint16_t do_SIB1_NR(rrc_gNB_carrier_data_t *carrier, ...@@ -452,7 +452,7 @@ uint16_t do_SIB1_NR(rrc_gNB_carrier_data_t *carrier,
ss1->monitoringSymbolsWithinSlot->buf = calloc(1,2); ss1->monitoringSymbolsWithinSlot->buf = calloc(1,2);
// should be '1000 0000 0000 00'B (LSB first!), first symbol in slot, adjust if needed // should be '1000 0000 0000 00'B (LSB first!), first symbol in slot, adjust if needed
ss1->monitoringSymbolsWithinSlot->buf[1] = 0; ss1->monitoringSymbolsWithinSlot->buf[1] = 0;
ss1->monitoringSymbolsWithinSlot->buf[0] = (1<<7); ss1->monitoringSymbolsWithinSlot->buf[0] = 0x80;
ss1->monitoringSymbolsWithinSlot->size = 2; ss1->monitoringSymbolsWithinSlot->size = 2;
ss1->monitoringSymbolsWithinSlot->bits_unused = 2; ss1->monitoringSymbolsWithinSlot->bits_unused = 2;
ss1->nrofCandidates = calloc(1,sizeof(*ss1->nrofCandidates)); ss1->nrofCandidates = calloc(1,sizeof(*ss1->nrofCandidates));
...@@ -480,7 +480,7 @@ uint16_t do_SIB1_NR(rrc_gNB_carrier_data_t *carrier, ...@@ -480,7 +480,7 @@ uint16_t do_SIB1_NR(rrc_gNB_carrier_data_t *carrier,
ss5->monitoringSymbolsWithinSlot->buf = calloc(1,2); ss5->monitoringSymbolsWithinSlot->buf = calloc(1,2);
// should be '1100 0000 0000 00'B (LSB first!), first two symols in slot, adjust if needed // should be '1100 0000 0000 00'B (LSB first!), first two symols in slot, adjust if needed
ss5->monitoringSymbolsWithinSlot->buf[1] = 0; ss5->monitoringSymbolsWithinSlot->buf[1] = 0;
ss5->monitoringSymbolsWithinSlot->buf[0] = (1<<7); ss5->monitoringSymbolsWithinSlot->buf[0] = 0x80;
ss5->monitoringSymbolsWithinSlot->size = 2; ss5->monitoringSymbolsWithinSlot->size = 2;
ss5->monitoringSymbolsWithinSlot->bits_unused = 2; ss5->monitoringSymbolsWithinSlot->bits_unused = 2;
ss5->nrofCandidates = calloc(1,sizeof(*ss5->nrofCandidates)); ss5->nrofCandidates = calloc(1,sizeof(*ss5->nrofCandidates));
...@@ -505,7 +505,7 @@ uint16_t do_SIB1_NR(rrc_gNB_carrier_data_t *carrier, ...@@ -505,7 +505,7 @@ uint16_t do_SIB1_NR(rrc_gNB_carrier_data_t *carrier,
ss7->monitoringSymbolsWithinSlot->buf = calloc(1,2); ss7->monitoringSymbolsWithinSlot->buf = calloc(1,2);
// should be '1100 0000 0000 00'B (LSB first!), first two symols in slot, adjust if needed // should be '1100 0000 0000 00'B (LSB first!), first two symols in slot, adjust if needed
ss7->monitoringSymbolsWithinSlot->buf[1] = 0; ss7->monitoringSymbolsWithinSlot->buf[1] = 0;
ss7->monitoringSymbolsWithinSlot->buf[0] = (1<<7); ss7->monitoringSymbolsWithinSlot->buf[0] = 0x80;
ss7->monitoringSymbolsWithinSlot->size = 2; ss7->monitoringSymbolsWithinSlot->size = 2;
ss7->monitoringSymbolsWithinSlot->bits_unused = 2; ss7->monitoringSymbolsWithinSlot->bits_unused = 2;
ss7->nrofCandidates = calloc(1,sizeof(*ss7->nrofCandidates)); ss7->nrofCandidates = calloc(1,sizeof(*ss7->nrofCandidates));
......
...@@ -875,7 +875,7 @@ void config_downlinkBWP(NR_BWP_Downlink_t *bwp, ...@@ -875,7 +875,7 @@ void config_downlinkBWP(NR_BWP_Downlink_t *bwp,
ss->monitoringSymbolsWithinSlot->buf = calloc(1,2); ss->monitoringSymbolsWithinSlot->buf = calloc(1,2);
// should be '1100 0000 0000 00'B (LSB first!), first two symols in slot, adjust if needed // should be '1100 0000 0000 00'B (LSB first!), first two symols in slot, adjust if needed
ss->monitoringSymbolsWithinSlot->buf[1] = 0; ss->monitoringSymbolsWithinSlot->buf[1] = 0;
ss->monitoringSymbolsWithinSlot->buf[0] = 0xc0; ss->monitoringSymbolsWithinSlot->buf[0] = 0x80;
ss->monitoringSymbolsWithinSlot->size = 2; ss->monitoringSymbolsWithinSlot->size = 2;
ss->monitoringSymbolsWithinSlot->bits_unused = 2; ss->monitoringSymbolsWithinSlot->bits_unused = 2;
ss->nrofCandidates = calloc(1,sizeof(*ss->nrofCandidates)); ss->nrofCandidates = calloc(1,sizeof(*ss->nrofCandidates));
...@@ -933,7 +933,7 @@ void config_downlinkBWP(NR_BWP_Downlink_t *bwp, ...@@ -933,7 +933,7 @@ void config_downlinkBWP(NR_BWP_Downlink_t *bwp,
ss2->monitoringSymbolsWithinSlot = calloc(1,sizeof(*ss2->monitoringSymbolsWithinSlot)); ss2->monitoringSymbolsWithinSlot = calloc(1,sizeof(*ss2->monitoringSymbolsWithinSlot));
ss2->monitoringSymbolsWithinSlot->buf = calloc(1,2); ss2->monitoringSymbolsWithinSlot->buf = calloc(1,2);
ss2->monitoringSymbolsWithinSlot->size = 2; ss2->monitoringSymbolsWithinSlot->size = 2;
ss2->monitoringSymbolsWithinSlot->buf[0]=0xc0; ss2->monitoringSymbolsWithinSlot->buf[0]=0x80;
ss2->monitoringSymbolsWithinSlot->buf[1]=0x0; ss2->monitoringSymbolsWithinSlot->buf[1]=0x0;
ss2->monitoringSymbolsWithinSlot->bits_unused = 2; ss2->monitoringSymbolsWithinSlot->bits_unused = 2;
ss2->nrofCandidates=calloc(1,sizeof(*ss2->nrofCandidates)); ss2->nrofCandidates=calloc(1,sizeof(*ss2->nrofCandidates));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment