|
|
|
@@ -77,36 +77,39 @@ void fill_default_reconfig(NR_ServingCellConfigCommon_t *servingcellconfigcommon
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Function to set or overwrite PTRS DL RRC parameters */
|
|
|
|
|
void rrc_config_dl_ptrs_params(NR_BWP_Downlink_t *bwp, int *ptrsNrb, int *ptrsMcs, int *epre_Ratio, int * reOffset)
|
|
|
|
|
void rrc_config_dl_ptrs_params(NR_BWP_Downlink_t *bwp, long *ptrsNrb, long *ptrsMcs, long *epre_Ratio, long *reOffset)
|
|
|
|
|
{
|
|
|
|
|
int i=0;
|
|
|
|
|
NR_DMRS_DownlinkConfig_t *tmp = bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup;
|
|
|
|
|
// struct NR_SetupRelease_PTRS_DownlinkConfig *tmp=bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS;
|
|
|
|
|
/* check for memory allocation */
|
|
|
|
|
if(bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS == NULL) {
|
|
|
|
|
bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS=calloc(1,sizeof(*bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS));
|
|
|
|
|
bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->present = NR_SetupRelease_PTRS_DownlinkConfig_PR_setup;
|
|
|
|
|
bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup= calloc(1, sizeof(*bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup));
|
|
|
|
|
bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup->frequencyDensity = calloc(1,sizeof(*bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup->frequencyDensity));
|
|
|
|
|
bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup->timeDensity = calloc(1, sizeof(*bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup->timeDensity));
|
|
|
|
|
bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup->epre_Ratio = calloc(1,sizeof(long));
|
|
|
|
|
bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup->resourceElementOffset = calloc(1,sizeof(long));
|
|
|
|
|
if (tmp->phaseTrackingRS == NULL) {
|
|
|
|
|
asn1cCalloc(tmp->phaseTrackingRS, TrackingRS);
|
|
|
|
|
TrackingRS->present = NR_SetupRelease_PTRS_DownlinkConfig_PR_setup;
|
|
|
|
|
asn1cCalloc(TrackingRS->choice.setup, setup);
|
|
|
|
|
asn1cCalloc(setup->frequencyDensity, freqD);
|
|
|
|
|
/* Fill the given values */
|
|
|
|
|
for(i = 0; i < 2; i++) {
|
|
|
|
|
asn1cSeqAdd(&bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup->frequencyDensity->list,&ptrsNrb[i]);
|
|
|
|
|
asn1cSequenceAdd(freqD->list, long, nbr);
|
|
|
|
|
*nbr = ptrsNrb[i];
|
|
|
|
|
}
|
|
|
|
|
asn1cCalloc(setup->timeDensity, timeD);
|
|
|
|
|
for(i = 0; i < 3; i++) {
|
|
|
|
|
asn1cSeqAdd(&bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup->timeDensity->list,&ptrsMcs[i]);
|
|
|
|
|
asn1cSequenceAdd(timeD->list, long, mcs);
|
|
|
|
|
*mcs = ptrsMcs[i];
|
|
|
|
|
}
|
|
|
|
|
}// if memory exist then over write the old values
|
|
|
|
|
else {
|
|
|
|
|
asn1cCallocOne(setup->epre_Ratio, epre_Ratio[0]);
|
|
|
|
|
asn1cCallocOne(setup->resourceElementOffset, reOffset[0]);
|
|
|
|
|
} else {
|
|
|
|
|
NR_PTRS_DownlinkConfig_t *TrackingRS = tmp->phaseTrackingRS->choice.setup;
|
|
|
|
|
for(i = 0; i < 2; i++) {
|
|
|
|
|
*bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup->frequencyDensity->list.array[i] = ptrsNrb[i];
|
|
|
|
|
*TrackingRS->frequencyDensity->list.array[i] = ptrsNrb[i];
|
|
|
|
|
}
|
|
|
|
|
for(i = 0; i < 3; i++) {
|
|
|
|
|
*bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup->timeDensity->list.array[i] = ptrsMcs[i];
|
|
|
|
|
*TrackingRS->timeDensity->list.array[i] = ptrsMcs[i];
|
|
|
|
|
}
|
|
|
|
|
*TrackingRS->epre_Ratio = epre_Ratio[0];
|
|
|
|
|
*TrackingRS->resourceElementOffset = reOffset[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
*bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup->epre_Ratio = *epre_Ratio;
|
|
|
|
|
*bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->phaseTrackingRS->choice.setup->resourceElementOffset = *reOffset;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|