Make most functions in nr_rrc_config.c static
This commit is contained in:
+110
-107
@@ -36,39 +36,7 @@
|
|||||||
|
|
||||||
const uint8_t slotsperframe[5] = {10, 20, 40, 80, 160};
|
const uint8_t slotsperframe[5] = {10, 20, 40, 80, 160};
|
||||||
|
|
||||||
NR_MAC_CellGroupConfig_t *configure_mac_cellgroup(void)
|
static NR_SearchSpace_t *rrc_searchspace_config(bool is_common, int searchspaceid, int coresetid)
|
||||||
{
|
|
||||||
NR_MAC_CellGroupConfig_t * mac_CellGroupConfig = calloc(1, sizeof(*mac_CellGroupConfig));
|
|
||||||
|
|
||||||
mac_CellGroupConfig->bsr_Config = calloc(1, sizeof(*mac_CellGroupConfig->bsr_Config));
|
|
||||||
mac_CellGroupConfig->bsr_Config->periodicBSR_Timer = NR_BSR_Config__periodicBSR_Timer_sf10;
|
|
||||||
mac_CellGroupConfig->bsr_Config->retxBSR_Timer = NR_BSR_Config__retxBSR_Timer_sf80;
|
|
||||||
mac_CellGroupConfig->tag_Config = calloc(1, sizeof(*mac_CellGroupConfig->tag_Config));
|
|
||||||
mac_CellGroupConfig->tag_Config->tag_ToReleaseList = NULL;
|
|
||||||
mac_CellGroupConfig->tag_Config->tag_ToAddModList = calloc(1,sizeof(*mac_CellGroupConfig->tag_Config->tag_ToAddModList));
|
|
||||||
struct NR_TAG *tag=calloc(1,sizeof(*tag));
|
|
||||||
tag->tag_Id = 0;
|
|
||||||
tag->timeAlignmentTimer = NR_TimeAlignmentTimer_infinity;
|
|
||||||
asn1cSeqAdd(&mac_CellGroupConfig->tag_Config->tag_ToAddModList->list,tag);
|
|
||||||
|
|
||||||
set_phr_config(mac_CellGroupConfig);
|
|
||||||
|
|
||||||
mac_CellGroupConfig->schedulingRequestConfig = calloc(1, sizeof(*mac_CellGroupConfig->schedulingRequestConfig));
|
|
||||||
mac_CellGroupConfig->schedulingRequestConfig->schedulingRequestToAddModList = CALLOC(1,sizeof(*mac_CellGroupConfig->schedulingRequestConfig->schedulingRequestToAddModList));
|
|
||||||
struct NR_SchedulingRequestToAddMod *schedulingrequestlist = CALLOC(1,sizeof(*schedulingrequestlist));
|
|
||||||
schedulingrequestlist->schedulingRequestId = 0;
|
|
||||||
schedulingrequestlist->sr_ProhibitTimer = NULL;
|
|
||||||
schedulingrequestlist->sr_TransMax = NR_SchedulingRequestToAddMod__sr_TransMax_n64;
|
|
||||||
asn1cSeqAdd(&(mac_CellGroupConfig->schedulingRequestConfig->schedulingRequestToAddModList->list),schedulingrequestlist);
|
|
||||||
|
|
||||||
mac_CellGroupConfig->skipUplinkTxDynamic=false;
|
|
||||||
mac_CellGroupConfig->ext1 = NULL;
|
|
||||||
return mac_CellGroupConfig;
|
|
||||||
}
|
|
||||||
|
|
||||||
NR_SearchSpace_t *rrc_searchspace_config(bool is_common,
|
|
||||||
int searchspaceid,
|
|
||||||
int coresetid)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
NR_SearchSpace_t *ss = calloc(1,sizeof(*ss));
|
NR_SearchSpace_t *ss = calloc(1,sizeof(*ss));
|
||||||
@@ -112,7 +80,7 @@ NR_SearchSpace_t *rrc_searchspace_config(bool is_common,
|
|||||||
return ss;
|
return ss;
|
||||||
}
|
}
|
||||||
|
|
||||||
NR_ControlResourceSet_t *get_coreset_config(int bwp_id, int curr_bwp, uint64_t ssb_bitmap)
|
static NR_ControlResourceSet_t *get_coreset_config(int bwp_id, int curr_bwp, uint64_t ssb_bitmap)
|
||||||
{
|
{
|
||||||
NR_ControlResourceSet_t *coreset = calloc(1, sizeof(*coreset));
|
NR_ControlResourceSet_t *coreset = calloc(1, sizeof(*coreset));
|
||||||
AssertFatal(coreset != NULL, "out of memory\n");
|
AssertFatal(coreset != NULL, "out of memory\n");
|
||||||
@@ -148,7 +116,8 @@ NR_ControlResourceSet_t *get_coreset_config(int bwp_id, int curr_bwp, uint64_t s
|
|||||||
return coreset;
|
return coreset;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t get_ssb_bitmap(const NR_ServingCellConfigCommon_t *scc) {
|
static uint64_t get_ssb_bitmap(const NR_ServingCellConfigCommon_t *scc)
|
||||||
|
{
|
||||||
uint64_t bitmap=0;
|
uint64_t bitmap=0;
|
||||||
switch (scc->ssb_PositionsInBurst->present) {
|
switch (scc->ssb_PositionsInBurst->present) {
|
||||||
case 1 :
|
case 1 :
|
||||||
@@ -168,8 +137,8 @@ uint64_t get_ssb_bitmap(const NR_ServingCellConfigCommon_t *scc) {
|
|||||||
return bitmap;
|
return bitmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_csirs_periodicity(NR_NZP_CSI_RS_Resource_t *nzpcsi0, int uid, int nb_slots_per_period) {
|
static void set_csirs_periodicity(NR_NZP_CSI_RS_Resource_t *nzpcsi0, int uid, int nb_slots_per_period)
|
||||||
|
{
|
||||||
nzpcsi0->periodicityAndOffset = calloc(1,sizeof(*nzpcsi0->periodicityAndOffset));
|
nzpcsi0->periodicityAndOffset = calloc(1,sizeof(*nzpcsi0->periodicityAndOffset));
|
||||||
int ideal_period = nb_slots_per_period * MAX_MOBILES_PER_GNB;
|
int ideal_period = nb_slots_per_period * MAX_MOBILES_PER_GNB;
|
||||||
|
|
||||||
@@ -215,14 +184,14 @@ void set_csirs_periodicity(NR_NZP_CSI_RS_Resource_t *nzpcsi0, int uid, int nb_sl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void config_csirs(const NR_ServingCellConfigCommon_t *servingcellconfigcommon,
|
static void config_csirs(const NR_ServingCellConfigCommon_t *servingcellconfigcommon,
|
||||||
NR_CSI_MeasConfig_t *csi_MeasConfig,
|
NR_CSI_MeasConfig_t *csi_MeasConfig,
|
||||||
int uid,
|
int uid,
|
||||||
int num_dl_antenna_ports,
|
int num_dl_antenna_ports,
|
||||||
int curr_bwp,
|
int curr_bwp,
|
||||||
int do_csirs,
|
int do_csirs,
|
||||||
int id) {
|
int id)
|
||||||
|
{
|
||||||
if (do_csirs) {
|
if (do_csirs) {
|
||||||
|
|
||||||
if(!csi_MeasConfig->nzp_CSI_RS_ResourceSetToAddModList)
|
if(!csi_MeasConfig->nzp_CSI_RS_ResourceSetToAddModList)
|
||||||
@@ -307,9 +276,9 @@ void config_csirs(const NR_ServingCellConfigCommon_t *servingcellconfigcommon,
|
|||||||
csi_MeasConfig->nzp_CSI_RS_ResourceToReleaseList = NULL;
|
csi_MeasConfig->nzp_CSI_RS_ResourceToReleaseList = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_csiim_offset(struct NR_CSI_ResourcePeriodicityAndOffset *periodicityAndOffset,
|
static void set_csiim_offset(struct NR_CSI_ResourcePeriodicityAndOffset *periodicityAndOffset,
|
||||||
struct NR_CSI_ResourcePeriodicityAndOffset *target_periodicityAndOffset) {
|
struct NR_CSI_ResourcePeriodicityAndOffset *target_periodicityAndOffset)
|
||||||
|
{
|
||||||
switch(periodicityAndOffset->present) {
|
switch(periodicityAndOffset->present) {
|
||||||
case NR_CSI_ResourcePeriodicityAndOffset_PR_slots4:
|
case NR_CSI_ResourcePeriodicityAndOffset_PR_slots4:
|
||||||
periodicityAndOffset->choice.slots4 = target_periodicityAndOffset->choice.slots4;
|
periodicityAndOffset->choice.slots4 = target_periodicityAndOffset->choice.slots4;
|
||||||
@@ -356,9 +325,12 @@ void set_csiim_offset(struct NR_CSI_ResourcePeriodicityAndOffset *periodicityAnd
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void config_csiim(int do_csirs, int dl_antenna_ports, int curr_bwp,
|
static void config_csiim(int do_csirs,
|
||||||
NR_CSI_MeasConfig_t *csi_MeasConfig, int id) {
|
int dl_antenna_ports,
|
||||||
|
int curr_bwp,
|
||||||
|
NR_CSI_MeasConfig_t *csi_MeasConfig,
|
||||||
|
int id)
|
||||||
|
{
|
||||||
if (do_csirs && dl_antenna_ports > 1) {
|
if (do_csirs && dl_antenna_ports > 1) {
|
||||||
if (!csi_MeasConfig->csi_IM_ResourceToAddModList)
|
if (!csi_MeasConfig->csi_IM_ResourceToAddModList)
|
||||||
csi_MeasConfig->csi_IM_ResourceToAddModList = calloc(1, sizeof(*csi_MeasConfig->csi_IM_ResourceToAddModList));
|
csi_MeasConfig->csi_IM_ResourceToAddModList = calloc(1, sizeof(*csi_MeasConfig->csi_IM_ResourceToAddModList));
|
||||||
@@ -430,8 +402,8 @@ long rrc_get_max_nr_csrs(const int max_rbs, const long b_SRS) {
|
|||||||
return c_srs;
|
return c_srs;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct NR_SRS_Resource__resourceType__periodic *configure_periodic_srs(const NR_ServingCellConfigCommon_t *scc,
|
static struct NR_SRS_Resource__resourceType__periodic *configure_periodic_srs(const NR_ServingCellConfigCommon_t *scc,
|
||||||
const int uid)
|
const int uid)
|
||||||
{
|
{
|
||||||
|
|
||||||
const NR_TDD_UL_DL_Pattern_t *tdd = scc->tdd_UL_DL_ConfigurationCommon ? &scc->tdd_UL_DL_ConfigurationCommon->pattern1 : NULL;
|
const NR_TDD_UL_DL_Pattern_t *tdd = scc->tdd_UL_DL_ConfigurationCommon ? &scc->tdd_UL_DL_ConfigurationCommon->pattern1 : NULL;
|
||||||
@@ -504,14 +476,14 @@ struct NR_SRS_Resource__resourceType__periodic *configure_periodic_srs(const NR_
|
|||||||
return periodic_srs;
|
return periodic_srs;
|
||||||
}
|
}
|
||||||
|
|
||||||
void config_srs(const NR_ServingCellConfigCommon_t *scc,
|
static void config_srs(const NR_ServingCellConfigCommon_t *scc,
|
||||||
NR_SetupRelease_SRS_Config_t *setup_release_srs_Config,
|
NR_SetupRelease_SRS_Config_t *setup_release_srs_Config,
|
||||||
const NR_UE_NR_Capability_t *uecap,
|
const NR_UE_NR_Capability_t *uecap,
|
||||||
const int curr_bwp,
|
const int curr_bwp,
|
||||||
const int uid,
|
const int uid,
|
||||||
const int res_id,
|
const int res_id,
|
||||||
const long maxMIMO_Layers,
|
const long maxMIMO_Layers,
|
||||||
const int do_srs)
|
const int do_srs)
|
||||||
{
|
{
|
||||||
setup_release_srs_Config->present = NR_SetupRelease_SRS_Config_PR_setup;
|
setup_release_srs_Config->present = NR_SetupRelease_SRS_Config_PR_setup;
|
||||||
|
|
||||||
@@ -787,7 +759,7 @@ void nr_rrc_config_ul_tda(NR_ServingCellConfigCommon_t *scc, int min_fb_delay){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_dl_DataToUL_ACK(NR_PUCCH_Config_t *pucch_Config, int min_feedback_time, NR_SubcarrierSpacing_t subcarrierSpacing)
|
static void set_dl_DataToUL_ACK(NR_PUCCH_Config_t *pucch_Config, int min_feedback_time, NR_SubcarrierSpacing_t subcarrierSpacing)
|
||||||
{
|
{
|
||||||
pucch_Config->dl_DataToUL_ACK = calloc(1,sizeof(*pucch_Config->dl_DataToUL_ACK));
|
pucch_Config->dl_DataToUL_ACK = calloc(1,sizeof(*pucch_Config->dl_DataToUL_ACK));
|
||||||
long *delay[8];
|
long *delay[8];
|
||||||
@@ -800,7 +772,7 @@ void set_dl_DataToUL_ACK(NR_PUCCH_Config_t *pucch_Config, int min_feedback_time,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// PUCCH resource set 0 for configuration with O_uci <= 2 bits and/or a positive or negative SR (section 9.2.1 of 38.213)
|
// PUCCH resource set 0 for configuration with O_uci <= 2 bits and/or a positive or negative SR (section 9.2.1 of 38.213)
|
||||||
void config_pucch_resset0(NR_PUCCH_Config_t *pucch_Config, int uid, int curr_bwp, const NR_UE_NR_Capability_t *uecap)
|
static void config_pucch_resset0(NR_PUCCH_Config_t *pucch_Config, int uid, int curr_bwp, const NR_UE_NR_Capability_t *uecap)
|
||||||
{
|
{
|
||||||
NR_PUCCH_ResourceSet_t *pucchresset = calloc(1,sizeof(*pucchresset));
|
NR_PUCCH_ResourceSet_t *pucchresset = calloc(1,sizeof(*pucchresset));
|
||||||
pucchresset->pucch_ResourceSetId = 0;
|
pucchresset->pucch_ResourceSetId = 0;
|
||||||
@@ -831,7 +803,7 @@ void config_pucch_resset0(NR_PUCCH_Config_t *pucch_Config, int uid, int curr_bwp
|
|||||||
|
|
||||||
|
|
||||||
// PUCCH resource set 1 for configuration with O_uci > 2 bits (currently format2)
|
// PUCCH resource set 1 for configuration with O_uci > 2 bits (currently format2)
|
||||||
void config_pucch_resset1(NR_PUCCH_Config_t *pucch_Config, const NR_UE_NR_Capability_t *uecap)
|
static void config_pucch_resset1(NR_PUCCH_Config_t *pucch_Config, const NR_UE_NR_Capability_t *uecap)
|
||||||
{
|
{
|
||||||
NR_PUCCH_ResourceSet_t *pucchresset=calloc(1,sizeof(*pucchresset));
|
NR_PUCCH_ResourceSet_t *pucchresset=calloc(1,sizeof(*pucchresset));
|
||||||
pucchresset->pucch_ResourceSetId = 1;
|
pucchresset->pucch_ResourceSetId = 1;
|
||||||
@@ -958,9 +930,7 @@ static void set_SR_periodandoffset(NR_SchedulingRequestResourceConfig_t *schedul
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void scheduling_request_config(const NR_ServingCellConfigCommon_t *scc,
|
static void scheduling_request_config(const NR_ServingCellConfigCommon_t *scc, NR_PUCCH_Config_t *pucch_Config, int scs)
|
||||||
NR_PUCCH_Config_t *pucch_Config,
|
|
||||||
int scs)
|
|
||||||
{
|
{
|
||||||
// format with <=2 bits in pucch resource set 0
|
// format with <=2 bits in pucch resource set 0
|
||||||
NR_PUCCH_ResourceSet_t *pucchresset = pucch_Config->resourceSetToAddModList->list.array[0];
|
NR_PUCCH_ResourceSet_t *pucchresset = pucch_Config->resourceSetToAddModList->list.array[0];
|
||||||
@@ -979,11 +949,11 @@ void scheduling_request_config(const NR_ServingCellConfigCommon_t *scc,
|
|||||||
asn1cSeqAdd(&pucch_Config->schedulingRequestResourceToAddModList->list,schedulingRequestResourceConfig);
|
asn1cSeqAdd(&pucch_Config->schedulingRequestResourceToAddModList->list,schedulingRequestResourceConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_dl_mcs_table(int scs,
|
static void set_dl_mcs_table(int scs,
|
||||||
const NR_UE_NR_Capability_t *cap,
|
const NR_UE_NR_Capability_t *cap,
|
||||||
NR_BWP_DownlinkDedicated_t *bwp_Dedicated,
|
NR_BWP_DownlinkDedicated_t *bwp_Dedicated,
|
||||||
const NR_ServingCellConfigCommon_t *scc) {
|
const NR_ServingCellConfigCommon_t *scc)
|
||||||
|
{
|
||||||
if (cap == NULL){
|
if (cap == NULL){
|
||||||
bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table = NULL;
|
bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table = NULL;
|
||||||
return;
|
return;
|
||||||
@@ -1024,7 +994,7 @@ void set_dl_mcs_table(int scs,
|
|||||||
bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table = NULL;
|
bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct NR_SetupRelease_PUSCH_Config *config_pusch(NR_PUSCH_Config_t *pusch_Config)
|
static struct NR_SetupRelease_PUSCH_Config *config_pusch(NR_PUSCH_Config_t *pusch_Config)
|
||||||
{
|
{
|
||||||
struct NR_SetupRelease_PUSCH_Config *setup_puschconfig = calloc(1, sizeof(*setup_puschconfig));
|
struct NR_SetupRelease_PUSCH_Config *setup_puschconfig = calloc(1, sizeof(*setup_puschconfig));
|
||||||
setup_puschconfig->present = NR_SetupRelease_PUSCH_Config_PR_setup;
|
setup_puschconfig->present = NR_SetupRelease_PUSCH_Config_PR_setup;
|
||||||
@@ -1105,7 +1075,7 @@ struct NR_SetupRelease_PUSCH_Config *config_pusch(NR_PUSCH_Config_t *pusch_Confi
|
|||||||
return setup_puschconfig;
|
return setup_puschconfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct NR_SetupRelease_PDSCH_Config *config_pdsch(uint64_t ssb_bitmap, int bwp_Id, int dl_antenna_ports)
|
static struct NR_SetupRelease_PDSCH_Config *config_pdsch(uint64_t ssb_bitmap, int bwp_Id, int dl_antenna_ports)
|
||||||
{
|
{
|
||||||
struct NR_SetupRelease_PDSCH_Config *setup_pdsch_Config = calloc(1,sizeof(*setup_pdsch_Config));
|
struct NR_SetupRelease_PDSCH_Config *setup_pdsch_Config = calloc(1,sizeof(*setup_pdsch_Config));
|
||||||
setup_pdsch_Config->present = NR_SetupRelease_PDSCH_Config_PR_setup;
|
setup_pdsch_Config->present = NR_SetupRelease_PDSCH_Config_PR_setup;
|
||||||
@@ -1148,14 +1118,14 @@ struct NR_SetupRelease_PDSCH_Config *config_pdsch(uint64_t ssb_bitmap, int bwp_I
|
|||||||
return setup_pdsch_Config;
|
return setup_pdsch_Config;
|
||||||
}
|
}
|
||||||
|
|
||||||
void config_downlinkBWP(NR_BWP_Downlink_t *bwp,
|
static void config_downlinkBWP(NR_BWP_Downlink_t *bwp,
|
||||||
const NR_ServingCellConfigCommon_t *scc,
|
const NR_ServingCellConfigCommon_t *scc,
|
||||||
const NR_ServingCellConfig_t *servingcellconfigdedicated,
|
const NR_ServingCellConfig_t *servingcellconfigdedicated,
|
||||||
const NR_UE_NR_Capability_t *uecap,
|
const NR_UE_NR_Capability_t *uecap,
|
||||||
int dl_antenna_ports,
|
int dl_antenna_ports,
|
||||||
bool force_256qam_off,
|
bool force_256qam_off,
|
||||||
int bwp_loop,
|
int bwp_loop,
|
||||||
bool is_SA)
|
bool is_SA)
|
||||||
{
|
{
|
||||||
bwp->bwp_Common = calloc(1,sizeof(*bwp->bwp_Common));
|
bwp->bwp_Common = calloc(1,sizeof(*bwp->bwp_Common));
|
||||||
|
|
||||||
@@ -1234,14 +1204,14 @@ void config_downlinkBWP(NR_BWP_Downlink_t *bwp,
|
|||||||
scc);
|
scc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void config_uplinkBWP(NR_BWP_Uplink_t *ubwp,
|
static void config_uplinkBWP(NR_BWP_Uplink_t *ubwp,
|
||||||
long bwp_loop,
|
long bwp_loop,
|
||||||
bool is_SA,
|
bool is_SA,
|
||||||
int uid,
|
int uid,
|
||||||
const gNB_RrcConfigurationReq *configuration,
|
const gNB_RrcConfigurationReq *configuration,
|
||||||
const NR_ServingCellConfig_t *servingcellconfigdedicated,
|
const NR_ServingCellConfig_t *servingcellconfigdedicated,
|
||||||
const NR_ServingCellConfigCommon_t *scc,
|
const NR_ServingCellConfigCommon_t *scc,
|
||||||
const NR_UE_NR_Capability_t *uecap)
|
const NR_UE_NR_Capability_t *uecap)
|
||||||
{
|
{
|
||||||
ubwp->bwp_Common = calloc(1,sizeof(*ubwp->bwp_Common));
|
ubwp->bwp_Common = calloc(1,sizeof(*ubwp->bwp_Common));
|
||||||
if(servingcellconfigdedicated->uplinkConfig->uplinkBWP_ToAddModList &&
|
if(servingcellconfigdedicated->uplinkConfig->uplinkBWP_ToAddModList &&
|
||||||
@@ -1316,7 +1286,7 @@ void config_uplinkBWP(NR_BWP_Uplink_t *ubwp,
|
|||||||
ubwp->bwp_Dedicated->beamFailureRecoveryConfig = NULL;
|
ubwp->bwp_Dedicated->beamFailureRecoveryConfig = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_phr_config(NR_MAC_CellGroupConfig_t *mac_CellGroupConfig)
|
static void set_phr_config(NR_MAC_CellGroupConfig_t *mac_CellGroupConfig)
|
||||||
{
|
{
|
||||||
mac_CellGroupConfig->phr_Config = calloc(1, sizeof(*mac_CellGroupConfig->phr_Config));
|
mac_CellGroupConfig->phr_Config = calloc(1, sizeof(*mac_CellGroupConfig->phr_Config));
|
||||||
mac_CellGroupConfig->phr_Config->present = NR_SetupRelease_PHR_Config_PR_setup;
|
mac_CellGroupConfig->phr_Config->present = NR_SetupRelease_PHR_Config_PR_setup;
|
||||||
@@ -1326,7 +1296,7 @@ void set_phr_config(NR_MAC_CellGroupConfig_t *mac_CellGroupConfig)
|
|||||||
mac_CellGroupConfig->phr_Config->choice.setup->phr_Tx_PowerFactorChange = NR_PHR_Config__phr_Tx_PowerFactorChange_dB1;
|
mac_CellGroupConfig->phr_Config->choice.setup->phr_Tx_PowerFactorChange = NR_PHR_Config__phr_Tx_PowerFactorChange_dB1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_csi_meas_periodicity(const NR_ServingCellConfigCommon_t *scc, NR_CSI_ReportConfig_t *csirep, int uid, bool is_rsrp)
|
static void set_csi_meas_periodicity(const NR_ServingCellConfigCommon_t *scc, NR_CSI_ReportConfig_t *csirep, int uid, bool is_rsrp)
|
||||||
{
|
{
|
||||||
const NR_TDD_UL_DL_Pattern_t *tdd = scc->tdd_UL_DL_ConfigurationCommon ? &scc->tdd_UL_DL_ConfigurationCommon->pattern1 : NULL;
|
const NR_TDD_UL_DL_Pattern_t *tdd = scc->tdd_UL_DL_ConfigurationCommon ? &scc->tdd_UL_DL_ConfigurationCommon->pattern1 : NULL;
|
||||||
const int n_slots_frame = slotsperframe[*scc->ssbSubcarrierSpacing];
|
const int n_slots_frame = slotsperframe[*scc->ssbSubcarrierSpacing];
|
||||||
@@ -1371,7 +1341,9 @@ void set_csi_meas_periodicity(const NR_ServingCellConfigCommon_t *scc, NR_CSI_Re
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void config_csi_codebook(const rrc_pdsch_AntennaPorts_t *antennaports, const int max_layers, struct NR_CodebookConfig *codebookConfig)
|
static void config_csi_codebook(const rrc_pdsch_AntennaPorts_t *antennaports,
|
||||||
|
const int max_layers,
|
||||||
|
struct NR_CodebookConfig *codebookConfig)
|
||||||
{
|
{
|
||||||
const int num_ant_ports = antennaports->N1 * antennaports->N2 * antennaports->XP;
|
const int num_ant_ports = antennaports->N1 * antennaports->N2 * antennaports->XP;
|
||||||
codebookConfig->codebookType.present = NR_CodebookConfig__codebookType_PR_type1;
|
codebookConfig->codebookType.present = NR_CodebookConfig__codebookType_PR_type1;
|
||||||
@@ -1470,14 +1442,14 @@ void config_csi_codebook(const rrc_pdsch_AntennaPorts_t *antennaports, const int
|
|||||||
codebookConfig->codebookType.choice.type1->codebookMode = 1;
|
codebookConfig->codebookType.choice.type1->codebookMode = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void config_csi_meas_report(NR_CSI_MeasConfig_t *csi_MeasConfig,
|
static void config_csi_meas_report(NR_CSI_MeasConfig_t *csi_MeasConfig,
|
||||||
const NR_ServingCellConfigCommon_t *servingcellconfigcommon,
|
const NR_ServingCellConfigCommon_t *servingcellconfigcommon,
|
||||||
NR_PUCCH_CSI_Resource_t *pucchcsires,
|
NR_PUCCH_CSI_Resource_t *pucchcsires,
|
||||||
struct NR_SetupRelease_PDSCH_Config *pdsch_Config,
|
struct NR_SetupRelease_PDSCH_Config *pdsch_Config,
|
||||||
const rrc_pdsch_AntennaPorts_t *antennaports,
|
const rrc_pdsch_AntennaPorts_t *antennaports,
|
||||||
const int max_layers,
|
const int max_layers,
|
||||||
int rep_id,
|
int rep_id,
|
||||||
int uid)
|
int uid)
|
||||||
{
|
{
|
||||||
NR_CSI_ReportConfig_t *csirep = calloc(1, sizeof(*csirep));
|
NR_CSI_ReportConfig_t *csirep = calloc(1, sizeof(*csirep));
|
||||||
csirep->reportConfigId = rep_id;
|
csirep->reportConfigId = rep_id;
|
||||||
@@ -1535,12 +1507,12 @@ void config_csi_meas_report(NR_CSI_MeasConfig_t *csi_MeasConfig,
|
|||||||
asn1cSeqAdd(&csi_MeasConfig->csi_ReportConfigToAddModList->list, csirep);
|
asn1cSeqAdd(&csi_MeasConfig->csi_ReportConfigToAddModList->list, csirep);
|
||||||
}
|
}
|
||||||
|
|
||||||
void config_rsrp_meas_report(NR_CSI_MeasConfig_t *csi_MeasConfig,
|
static void config_rsrp_meas_report(NR_CSI_MeasConfig_t *csi_MeasConfig,
|
||||||
const NR_ServingCellConfigCommon_t *servingcellconfigcommon,
|
const NR_ServingCellConfigCommon_t *servingcellconfigcommon,
|
||||||
NR_PUCCH_CSI_Resource_t *pucchcsires,
|
NR_PUCCH_CSI_Resource_t *pucchcsires,
|
||||||
int do_csi, // if rsrp is based on CSI or SSB
|
int do_csi, // if rsrp is based on CSI or SSB
|
||||||
int rep_id,
|
int rep_id,
|
||||||
int uid)
|
int uid)
|
||||||
{
|
{
|
||||||
NR_CSI_ReportConfig_t *csirep = calloc(1, sizeof(*csirep));
|
NR_CSI_ReportConfig_t *csirep = calloc(1, sizeof(*csirep));
|
||||||
csirep->reportConfigId = rep_id;
|
csirep->reportConfigId = rep_id;
|
||||||
@@ -2019,6 +1991,37 @@ int encode_SIB1_NR(NR_BCCH_DL_SCH_Message_t *sib1, uint8_t *buffer, int max_buff
|
|||||||
return (enc_rval.encoded + 7) / 8;
|
return (enc_rval.encoded + 7) / 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static NR_MAC_CellGroupConfig_t *configure_mac_cellgroup(void)
|
||||||
|
{
|
||||||
|
NR_MAC_CellGroupConfig_t * mac_CellGroupConfig = calloc(1, sizeof(*mac_CellGroupConfig));
|
||||||
|
|
||||||
|
mac_CellGroupConfig->bsr_Config = calloc(1, sizeof(*mac_CellGroupConfig->bsr_Config));
|
||||||
|
mac_CellGroupConfig->bsr_Config->periodicBSR_Timer = NR_BSR_Config__periodicBSR_Timer_sf10;
|
||||||
|
mac_CellGroupConfig->bsr_Config->retxBSR_Timer = NR_BSR_Config__retxBSR_Timer_sf80;
|
||||||
|
mac_CellGroupConfig->tag_Config = calloc(1, sizeof(*mac_CellGroupConfig->tag_Config));
|
||||||
|
mac_CellGroupConfig->tag_Config->tag_ToReleaseList = NULL;
|
||||||
|
mac_CellGroupConfig->tag_Config->tag_ToAddModList = calloc(1,sizeof(*mac_CellGroupConfig->tag_Config->tag_ToAddModList));
|
||||||
|
struct NR_TAG *tag=calloc(1,sizeof(*tag));
|
||||||
|
tag->tag_Id = 0;
|
||||||
|
tag->timeAlignmentTimer = NR_TimeAlignmentTimer_infinity;
|
||||||
|
asn1cSeqAdd(&mac_CellGroupConfig->tag_Config->tag_ToAddModList->list,tag);
|
||||||
|
|
||||||
|
set_phr_config(mac_CellGroupConfig);
|
||||||
|
|
||||||
|
mac_CellGroupConfig->schedulingRequestConfig = calloc(1, sizeof(*mac_CellGroupConfig->schedulingRequestConfig));
|
||||||
|
mac_CellGroupConfig->schedulingRequestConfig->schedulingRequestToAddModList = CALLOC(1,sizeof(*mac_CellGroupConfig->schedulingRequestConfig->schedulingRequestToAddModList));
|
||||||
|
struct NR_SchedulingRequestToAddMod *schedulingrequestlist = CALLOC(1,sizeof(*schedulingrequestlist));
|
||||||
|
schedulingrequestlist->schedulingRequestId = 0;
|
||||||
|
schedulingrequestlist->sr_ProhibitTimer = NULL;
|
||||||
|
schedulingrequestlist->sr_TransMax = NR_SchedulingRequestToAddMod__sr_TransMax_n64;
|
||||||
|
asn1cSeqAdd(&(mac_CellGroupConfig->schedulingRequestConfig->schedulingRequestToAddModList->list),schedulingrequestlist);
|
||||||
|
|
||||||
|
mac_CellGroupConfig->skipUplinkTxDynamic=false;
|
||||||
|
mac_CellGroupConfig->ext1 = NULL;
|
||||||
|
return mac_CellGroupConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static NR_SpCellConfig_t *get_initial_SpCellConfig(int uid,
|
static NR_SpCellConfig_t *get_initial_SpCellConfig(int uid,
|
||||||
const NR_ServingCellConfigCommon_t *scc,
|
const NR_ServingCellConfigCommon_t *scc,
|
||||||
const NR_ServingCellConfig_t *servingcellconfigdedicated,
|
const NR_ServingCellConfig_t *servingcellconfigdedicated,
|
||||||
|
|||||||
@@ -34,75 +34,17 @@
|
|||||||
#include "nr_rrc_defs.h"
|
#include "nr_rrc_defs.h"
|
||||||
#include "openair2/RRC/NR/MESSAGES/asn1_msg.h"
|
#include "openair2/RRC/NR/MESSAGES/asn1_msg.h"
|
||||||
|
|
||||||
void set_phr_config(NR_MAC_CellGroupConfig_t *mac_CellGroupConfig);
|
|
||||||
uint64_t get_ssb_bitmap(const NR_ServingCellConfigCommon_t *scc);
|
|
||||||
NR_ControlResourceSet_t *get_coreset_config(int bwp_id, int curr_bwp, uint64_t ssb_bitmap);
|
|
||||||
NR_SearchSpace_t *rrc_searchspace_config(bool is_common,
|
|
||||||
int searchspaceid,
|
|
||||||
int coresetid);
|
|
||||||
void nr_rrc_config_dl_tda(struct NR_PDSCH_TimeDomainResourceAllocationList *pdsch_TimeDomainAllocationList,
|
void nr_rrc_config_dl_tda(struct NR_PDSCH_TimeDomainResourceAllocationList *pdsch_TimeDomainAllocationList,
|
||||||
frame_type_t frame_type,
|
frame_type_t frame_type,
|
||||||
NR_TDD_UL_DL_ConfigCommon_t *tdd_UL_DL_ConfigurationCommon,
|
NR_TDD_UL_DL_ConfigCommon_t *tdd_UL_DL_ConfigurationCommon,
|
||||||
int curr_bwp);
|
int curr_bwp);
|
||||||
void nr_rrc_config_ul_tda(NR_ServingCellConfigCommon_t *scc, int min_fb_delay);
|
void nr_rrc_config_ul_tda(NR_ServingCellConfigCommon_t *scc, int min_fb_delay);
|
||||||
void config_pucch_resset0(NR_PUCCH_Config_t *pucch_Config, int uid, int curr_bwp, const NR_UE_NR_Capability_t *uecap);
|
|
||||||
void config_pucch_resset1(NR_PUCCH_Config_t *pucch_Config, const NR_UE_NR_Capability_t *uecap);
|
|
||||||
void set_dl_DataToUL_ACK(NR_PUCCH_Config_t *pucch_Config, int min_feedback_time, NR_SubcarrierSpacing_t subcarrierSpacing);
|
|
||||||
void set_pucch_power_config(NR_PUCCH_Config_t *pucch_Config, int do_csirs);
|
|
||||||
void scheduling_request_config(const NR_ServingCellConfigCommon_t *scc,
|
|
||||||
NR_PUCCH_Config_t *pucch_Config,
|
|
||||||
int scs);
|
|
||||||
void config_rsrp_meas_report(NR_CSI_MeasConfig_t *csi_MeasConfig, const NR_ServingCellConfigCommon_t *servingcellconfigcommon, NR_PUCCH_CSI_Resource_t *pucchcsires, int do_csi, int rep_id, int uid);
|
|
||||||
void config_csi_meas_report(NR_CSI_MeasConfig_t *csi_MeasConfig,
|
|
||||||
const NR_ServingCellConfigCommon_t *servingcellconfigcommon,
|
|
||||||
NR_PUCCH_CSI_Resource_t *pucchcsires,
|
|
||||||
struct NR_SetupRelease_PDSCH_Config *pdsch_Config,
|
|
||||||
const rrc_pdsch_AntennaPorts_t *antennaports,
|
|
||||||
const int max_layers,
|
|
||||||
int rep_id,
|
|
||||||
int uid);
|
|
||||||
void config_csirs(const NR_ServingCellConfigCommon_t *servingcellconfigcommon,
|
|
||||||
NR_CSI_MeasConfig_t *csi_MeasConfig,
|
|
||||||
int uid,
|
|
||||||
int num_dl_antenna_ports,
|
|
||||||
int curr_bwp,
|
|
||||||
int do_csirs,
|
|
||||||
int id);
|
|
||||||
void config_csiim(int do_csirs, int dl_antenna_ports, int curr_bwp,
|
|
||||||
NR_CSI_MeasConfig_t *csi_MeasConfig, int id);
|
|
||||||
void config_srs(const NR_ServingCellConfigCommon_t *scc,
|
|
||||||
NR_SetupRelease_SRS_Config_t *setup_release_srs_Config,
|
|
||||||
const NR_UE_NR_Capability_t *uecap,
|
|
||||||
const int curr_bwp,
|
|
||||||
const int uid,
|
|
||||||
const int res_id,
|
|
||||||
const long maxMIMO_Layers,
|
|
||||||
const int do_srs);
|
|
||||||
struct NR_SetupRelease_PDSCH_Config *config_pdsch(uint64_t ssb_bitmap, int bwp_Id, int dl_antenna_ports);
|
|
||||||
void set_dl_mcs_table(int scs,
|
|
||||||
const NR_UE_NR_Capability_t *cap,
|
|
||||||
NR_BWP_DownlinkDedicated_t *bwp_Dedicated,
|
|
||||||
const NR_ServingCellConfigCommon_t *scc);
|
|
||||||
void prepare_sim_uecap(NR_UE_NR_Capability_t *cap,
|
void prepare_sim_uecap(NR_UE_NR_Capability_t *cap,
|
||||||
NR_ServingCellConfigCommon_t *scc,
|
NR_ServingCellConfigCommon_t *scc,
|
||||||
int numerology,
|
int numerology,
|
||||||
int rbsize,
|
int rbsize,
|
||||||
int mcs_table);
|
int mcs_table);
|
||||||
struct NR_SetupRelease_PUSCH_Config *config_pusch(NR_PUSCH_Config_t *pusch_Config);
|
|
||||||
void config_downlinkBWP(NR_BWP_Downlink_t *bwp,
|
|
||||||
const NR_ServingCellConfigCommon_t *scc,
|
|
||||||
const NR_ServingCellConfig_t *servingcellconfigdedicated,
|
|
||||||
const NR_UE_NR_Capability_t *uecap,
|
|
||||||
int dl_antenna_ports,
|
|
||||||
bool force_256qam_off,
|
|
||||||
int bwp_loop, bool is_SA);
|
|
||||||
void config_uplinkBWP(NR_BWP_Uplink_t *ubwp,
|
|
||||||
long bwp_loop, bool is_SA, int uid,
|
|
||||||
const gNB_RrcConfigurationReq *configuration,
|
|
||||||
const NR_ServingCellConfig_t *servingcellconfigdedicated,
|
|
||||||
const NR_ServingCellConfigCommon_t *scc,
|
|
||||||
const NR_UE_NR_Capability_t *uecap);
|
|
||||||
NR_MAC_CellGroupConfig_t *configure_mac_cellgroup(void);
|
|
||||||
|
|
||||||
|
|
||||||
NR_BCCH_BCH_Message_t *get_new_MIB_NR(const NR_ServingCellConfigCommon_t *scc);
|
NR_BCCH_BCH_Message_t *get_new_MIB_NR(const NR_ServingCellConfigCommon_t *scc);
|
||||||
|
|||||||
Reference in New Issue
Block a user