Fill RRC MeasConfig with correct SSB values from DU
This commit is contained in:
@@ -1093,8 +1093,12 @@ int do_RRCReestablishmentComplete(uint8_t *buffer, size_t buffer_size, int64_t r
|
|||||||
return((enc_rval.encoded+7)/8);
|
return((enc_rval.encoded+7)/8);
|
||||||
}
|
}
|
||||||
|
|
||||||
NR_MeasConfig_t *get_defaultMeasConfig(uint32_t ssb_arfcn, int band, int scs)
|
NR_MeasConfig_t *get_defaultMeasConfig(const NR_MeasTiming_t *mt, int band, int scs)
|
||||||
{
|
{
|
||||||
|
DevAssert(mt != NULL && mt->frequencyAndTiming != NULL);
|
||||||
|
const struct NR_MeasTiming__frequencyAndTiming *ft = mt->frequencyAndTiming;
|
||||||
|
const NR_SSB_MTC_t *ssb_mtc = &ft->ssb_MeasurementTimingConfiguration;
|
||||||
|
|
||||||
NR_MeasConfig_t *mc = calloc(1, sizeof(*mc));
|
NR_MeasConfig_t *mc = calloc(1, sizeof(*mc));
|
||||||
mc->measObjectToAddModList = calloc(1, sizeof(*mc->measObjectToAddModList));
|
mc->measObjectToAddModList = calloc(1, sizeof(*mc->measObjectToAddModList));
|
||||||
mc->reportConfigToAddModList = calloc(1, sizeof(*mc->reportConfigToAddModList));
|
mc->reportConfigToAddModList = calloc(1, sizeof(*mc->reportConfigToAddModList));
|
||||||
@@ -1105,17 +1109,16 @@ NR_MeasConfig_t *get_defaultMeasConfig(uint32_t ssb_arfcn, int band, int scs)
|
|||||||
mo1->measObjectId = 1;
|
mo1->measObjectId = 1;
|
||||||
mo1->measObject.present = NR_MeasObjectToAddMod__measObject_PR_measObjectNR;
|
mo1->measObject.present = NR_MeasObjectToAddMod__measObject_PR_measObjectNR;
|
||||||
NR_MeasObjectNR_t *monr1 = calloc(1, sizeof(*monr1));
|
NR_MeasObjectNR_t *monr1 = calloc(1, sizeof(*monr1));
|
||||||
asn1cCallocOne(monr1->ssbFrequency, ssb_arfcn);
|
asn1cCallocOne(monr1->ssbFrequency, ft->carrierFreq);
|
||||||
asn1cCallocOne(monr1->ssbSubcarrierSpacing, scs);
|
asn1cCallocOne(monr1->ssbSubcarrierSpacing, ft->ssbSubcarrierSpacing);
|
||||||
monr1->referenceSignalConfig.ssb_ConfigMobility = calloc(1, sizeof(*monr1->referenceSignalConfig.ssb_ConfigMobility));
|
monr1->referenceSignalConfig.ssb_ConfigMobility = calloc(1, sizeof(*monr1->referenceSignalConfig.ssb_ConfigMobility));
|
||||||
monr1->referenceSignalConfig.ssb_ConfigMobility->deriveSSB_IndexFromCell = true;
|
monr1->referenceSignalConfig.ssb_ConfigMobility->deriveSSB_IndexFromCell = true;
|
||||||
monr1->absThreshSS_BlocksConsolidation = calloc(1, sizeof(*monr1->absThreshSS_BlocksConsolidation));
|
monr1->absThreshSS_BlocksConsolidation = calloc(1, sizeof(*monr1->absThreshSS_BlocksConsolidation));
|
||||||
asn1cCallocOne(monr1->absThreshSS_BlocksConsolidation->thresholdRSRP, 36);
|
asn1cCallocOne(monr1->absThreshSS_BlocksConsolidation->thresholdRSRP, 36);
|
||||||
asn1cCallocOne(monr1->nrofSS_BlocksToAverage, 8);
|
asn1cCallocOne(monr1->nrofSS_BlocksToAverage, 8);
|
||||||
monr1->smtc1 = calloc(1, sizeof(*monr1->smtc1));
|
monr1->smtc1 = calloc(1, sizeof(*monr1->smtc1));
|
||||||
monr1->smtc1->periodicityAndOffset.present = NR_SSB_MTC__periodicityAndOffset_PR_sf20;
|
monr1->smtc1->periodicityAndOffset = ssb_mtc->periodicityAndOffset;
|
||||||
monr1->smtc1->periodicityAndOffset.choice.sf20 = 2;
|
monr1->smtc1->duration = ssb_mtc->duration;
|
||||||
monr1->smtc1->duration = NR_SSB_MTC__duration_sf2;
|
|
||||||
monr1->quantityConfigIndex = 1;
|
monr1->quantityConfigIndex = 1;
|
||||||
monr1->ext1 = calloc(1, sizeof(*monr1->ext1));
|
monr1->ext1 = calloc(1, sizeof(*monr1->ext1));
|
||||||
asn1cCallocOne(monr1->ext1->freqBandIndicatorNR, band);
|
asn1cCallocOne(monr1->ext1->freqBandIndicatorNR, band);
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ int do_RRCReestablishment(rrc_gNB_ue_context_t *const ue_context_pP,
|
|||||||
|
|
||||||
int do_RRCReestablishmentComplete(uint8_t *buffer, size_t buffer_size, int64_t rrc_TransactionIdentifier);
|
int do_RRCReestablishmentComplete(uint8_t *buffer, size_t buffer_size, int64_t rrc_TransactionIdentifier);
|
||||||
|
|
||||||
NR_MeasConfig_t *get_defaultMeasConfig(uint32_t absFreqSSB, int band, int scs);
|
NR_MeasConfig_t *get_defaultMeasConfig(const NR_MeasTiming_t *mt, int band, int scs);
|
||||||
void free_defaultMeasConfig(NR_MeasConfig_t *mc);
|
void free_defaultMeasConfig(NR_MeasConfig_t *mc);
|
||||||
uint8_t do_NR_Paging(uint8_t Mod_id, uint8_t *buffer, uint32_t tmsi);
|
uint8_t do_NR_Paging(uint8_t Mod_id, uint8_t *buffer, uint32_t tmsi);
|
||||||
|
|
||||||
|
|||||||
@@ -513,10 +513,14 @@ static void rrc_gNB_generate_defaultRRCReconfiguration(const protocol_ctxt_t *co
|
|||||||
const nr_rrc_du_container_t *du = get_du_for_ue(rrc, ue_p->rrc_ue_id);
|
const nr_rrc_du_container_t *du = get_du_for_ue(rrc, ue_p->rrc_ue_id);
|
||||||
DevAssert(du != NULL);
|
DevAssert(du != NULL);
|
||||||
f1ap_served_cell_info_t *cell_info = &du->setup_req->cell[0].info;
|
f1ap_served_cell_info_t *cell_info = &du->setup_req->cell[0].info;
|
||||||
int scs = get_ssb_scs(cell_info);
|
NR_MeasConfig_t *measconfig = NULL;
|
||||||
int band = get_dl_band(cell_info);
|
if (du->mtc != NULL) {
|
||||||
uint32_t ssb_arfcn = get_ssb_arfcn(du);
|
int scs = get_ssb_scs(cell_info);
|
||||||
NR_MeasConfig_t *measconfig = get_defaultMeasConfig(ssb_arfcn, band, scs);
|
int band = get_dl_band(cell_info);
|
||||||
|
const NR_MeasTimingList_t *mtlist = du->mtc->criticalExtensions.choice.c1->choice.measTimingConf->measTiming;
|
||||||
|
const NR_MeasTiming_t *mt = mtlist->list.array[0];
|
||||||
|
measconfig = get_defaultMeasConfig(mt, band, scs);
|
||||||
|
}
|
||||||
NR_SRB_ToAddModList_t *SRBs = createSRBlist(ue_p, false);
|
NR_SRB_ToAddModList_t *SRBs = createSRBlist(ue_p, false);
|
||||||
NR_DRB_ToAddModList_t *DRBs = createDRBlist(ue_p, false);
|
NR_DRB_ToAddModList_t *DRBs = createDRBlist(ue_p, false);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user