Refactor generate_CG_Config(): return CG_Config
Simplify code by returning an allocated object to a CG_Config. It leads to less code and is easier to reason about, because each call will return a new CG_Config, which can be freed, irrespective of other calls to fill_default_reconfig().
This commit is contained in:
@@ -68,10 +68,7 @@ void rrc_remove_ue(gNB_RRC_INST *rrc, rrc_gNB_ue_context_t *ue_context_p);
|
|||||||
|
|
||||||
NR_RRCReconfiguration_IEs_t *get_default_reconfig(const NR_CellGroupConfig_t *secondaryCellGroup);
|
NR_RRCReconfiguration_IEs_t *get_default_reconfig(const NR_CellGroupConfig_t *secondaryCellGroup);
|
||||||
|
|
||||||
int generate_CG_Config(gNB_RRC_INST *rrc,
|
NR_CG_Config_t *generate_CG_Config(const NR_RRCReconfiguration_t *reconfig, const NR_RadioBearerConfig_t *rbconfig);
|
||||||
NR_CG_Config_t *cg_Config,
|
|
||||||
NR_RRCReconfiguration_t *reconfig,
|
|
||||||
NR_RadioBearerConfig_t *rbconfig);
|
|
||||||
|
|
||||||
int parse_CG_ConfigInfo(gNB_RRC_INST *rrc, NR_CG_ConfigInfo_t *CG_ConfigInfo, x2ap_ENDC_sgnb_addition_req_t *m);
|
int parse_CG_ConfigInfo(gNB_RRC_INST *rrc, NR_CG_ConfigInfo_t *CG_ConfigInfo, x2ap_ENDC_sgnb_addition_req_t *m);
|
||||||
|
|
||||||
|
|||||||
@@ -79,17 +79,14 @@ int parse_CG_ConfigInfo(gNB_RRC_INST *rrc, NR_CG_ConfigInfo_t *CG_ConfigInfo, x2
|
|||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NR_CG_Config_t *generate_CG_Config(const NR_RRCReconfiguration_t *reconfig, const NR_RadioBearerConfig_t *rbconfig)
|
||||||
int generate_CG_Config(gNB_RRC_INST *rrc,
|
{
|
||||||
NR_CG_Config_t *cg_Config,
|
NR_CG_Config_t *cg_Config = calloc(1, sizeof(*cg_Config));
|
||||||
NR_RRCReconfiguration_t *reconfig,
|
|
||||||
NR_RadioBearerConfig_t *rbconfig) {
|
|
||||||
cg_Config->criticalExtensions.present = NR_CG_Config__criticalExtensions_PR_c1;
|
cg_Config->criticalExtensions.present = NR_CG_Config__criticalExtensions_PR_c1;
|
||||||
cg_Config->criticalExtensions.choice.c1 = calloc(1,sizeof(*cg_Config->criticalExtensions.choice.c1));
|
cg_Config->criticalExtensions.choice.c1 = calloc(1,sizeof(*cg_Config->criticalExtensions.choice.c1));
|
||||||
cg_Config->criticalExtensions.choice.c1->present = NR_CG_Config__criticalExtensions__c1_PR_cg_Config;
|
cg_Config->criticalExtensions.choice.c1->present = NR_CG_Config__criticalExtensions__c1_PR_cg_Config;
|
||||||
cg_Config->criticalExtensions.choice.c1->choice.cg_Config = calloc(1,sizeof(NR_CG_Config_IEs_t));
|
cg_Config->criticalExtensions.choice.c1->choice.cg_Config = calloc(1,sizeof(NR_CG_Config_IEs_t));
|
||||||
char buffer[1024];
|
char buffer[1024];
|
||||||
int total_size;
|
|
||||||
asn_enc_rval_t enc_rval = uper_encode_to_buffer(&asn_DEF_NR_RRCReconfiguration, NULL, (void *)reconfig, buffer, 1024);
|
asn_enc_rval_t enc_rval = uper_encode_to_buffer(&asn_DEF_NR_RRCReconfiguration, NULL, (void *)reconfig, buffer, 1024);
|
||||||
AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %jd)!\n",
|
AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %jd)!\n",
|
||||||
enc_rval.failed_type->name, enc_rval.encoded);
|
enc_rval.failed_type->name, enc_rval.encoded);
|
||||||
@@ -97,7 +94,6 @@ int generate_CG_Config(gNB_RRC_INST *rrc,
|
|||||||
OCTET_STRING_fromBuf(cg_Config->criticalExtensions.choice.c1->choice.cg_Config->scg_CellGroupConfig,
|
OCTET_STRING_fromBuf(cg_Config->criticalExtensions.choice.c1->choice.cg_Config->scg_CellGroupConfig,
|
||||||
(const char *)buffer,
|
(const char *)buffer,
|
||||||
(enc_rval.encoded+7)>>3);
|
(enc_rval.encoded+7)>>3);
|
||||||
total_size = (enc_rval.encoded+7)>>3;
|
|
||||||
|
|
||||||
FILE *fd; // file to be generated for nr-ue
|
FILE *fd; // file to be generated for nr-ue
|
||||||
if (get_softmodem_params()->phy_test==1 || get_softmodem_params()->do_ra > 0 || get_softmodem_params()->sa == 1) {
|
if (get_softmodem_params()->phy_test==1 || get_softmodem_params()->do_ra > 0 || get_softmodem_params()->sa == 1) {
|
||||||
@@ -140,8 +136,7 @@ int generate_CG_Config(gNB_RRC_INST *rrc,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
total_size = total_size + ((enc_rval.encoded+7)>>3);
|
return cg_Config;
|
||||||
return(total_size);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -259,10 +259,8 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc, rrc_gNB_ue_context_t *ue_context_p, x2a
|
|||||||
|
|
||||||
UE->reconfig->criticalExtensions.choice.rrcReconfiguration = get_default_reconfig(UE->secondaryCellGroup);
|
UE->reconfig->criticalExtensions.choice.rrcReconfiguration = get_default_reconfig(UE->secondaryCellGroup);
|
||||||
UE->rnti = UE->secondaryCellGroup->spCellConfig->reconfigurationWithSync->newUE_Identity;
|
UE->rnti = UE->secondaryCellGroup->spCellConfig->reconfigurationWithSync->newUE_Identity;
|
||||||
NR_CG_Config_t *CG_Config = calloc(1,sizeof(*CG_Config));
|
|
||||||
memset((void *)CG_Config,0,sizeof(*CG_Config));
|
NR_CG_Config_t *CG_Config = generate_CG_Config(UE->reconfig, UE->rb_config);
|
||||||
// int CG_Config_size = generate_CG_Config(rrc,CG_Config,UE->reconfig,UE->rb_config);
|
|
||||||
generate_CG_Config(rrc, CG_Config, UE->reconfig, UE->rb_config);
|
|
||||||
|
|
||||||
if(m!=NULL) {
|
if(m!=NULL) {
|
||||||
uint8_t inde_list[m->nb_e_rabs_tobeadded];
|
uint8_t inde_list[m->nb_e_rabs_tobeadded];
|
||||||
|
|||||||
Reference in New Issue
Block a user