read uecap file in nr_rrc_ue_process_ueCapabilityEnquiry
This commit is contained in:
@@ -2597,14 +2597,22 @@ nr_rrc_ue_process_ueCapabilityEnquiry(
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
{
|
{
|
||||||
asn_enc_rval_t enc_rval;
|
asn_enc_rval_t enc_rval;
|
||||||
|
asn_dec_rval_t dec_rval;
|
||||||
NR_UL_DCCH_Message_t ul_dcch_msg;
|
NR_UL_DCCH_Message_t ul_dcch_msg;
|
||||||
NR_UE_CapabilityRAT_Container_t ue_CapabilityRAT_Container;
|
NR_UE_CapabilityRAT_Container_t ue_CapabilityRAT_Container;
|
||||||
|
char UE_NR_Capability_xer_fname[1024];
|
||||||
|
char UE_NR_Capability_xer[8192];
|
||||||
|
size_t size;
|
||||||
uint8_t buffer[200];
|
uint8_t buffer[200];
|
||||||
int i;
|
int i;
|
||||||
LOG_I(NR_RRC,"[UE %d] Frame %d: Receiving from SRB1 (DL-DCCH), Processing UECapabilityEnquiry (gNB %d)\n",
|
LOG_I(NR_RRC,"[UE %d] Frame %d: Receiving from SRB1 (DL-DCCH), Processing UECapabilityEnquiry (gNB %d)\n",
|
||||||
ctxt_pP->module_id,
|
ctxt_pP->module_id,
|
||||||
ctxt_pP->frame,
|
ctxt_pP->frame,
|
||||||
gNB_index);
|
gNB_index);
|
||||||
|
|
||||||
|
sprintf(UE_NR_Capability_xer_fname,"%stargets/PROJECTS/GENERIC-NR-5GC/CONF/uecap.xml",getenv("OPENAIR_HOME"));
|
||||||
|
FILE *f = fopen(UE_NR_Capability_xer_fname, "r");
|
||||||
|
|
||||||
memset((void *)&ul_dcch_msg,0,sizeof(NR_UL_DCCH_Message_t));
|
memset((void *)&ul_dcch_msg,0,sizeof(NR_UL_DCCH_Message_t));
|
||||||
memset((void *)&ue_CapabilityRAT_Container,0,sizeof(NR_UE_CapabilityRAT_Container_t));
|
memset((void *)&ue_CapabilityRAT_Container,0,sizeof(NR_UE_CapabilityRAT_Container_t));
|
||||||
ul_dcch_msg.message.present = NR_UL_DCCH_MessageType_PR_c1;
|
ul_dcch_msg.message.present = NR_UL_DCCH_MessageType_PR_c1;
|
||||||
@@ -2613,14 +2621,26 @@ nr_rrc_ue_process_ueCapabilityEnquiry(
|
|||||||
ul_dcch_msg.message.choice.c1->choice.ueCapabilityInformation = CALLOC(1, sizeof(struct NR_UECapabilityInformation));
|
ul_dcch_msg.message.choice.c1->choice.ueCapabilityInformation = CALLOC(1, sizeof(struct NR_UECapabilityInformation));
|
||||||
ul_dcch_msg.message.choice.c1->choice.ueCapabilityInformation->rrc_TransactionIdentifier = UECapabilityEnquiry->rrc_TransactionIdentifier;
|
ul_dcch_msg.message.choice.c1->choice.ueCapabilityInformation->rrc_TransactionIdentifier = UECapabilityEnquiry->rrc_TransactionIdentifier;
|
||||||
ue_CapabilityRAT_Container.rat_Type = NR_RAT_Type_nr;
|
ue_CapabilityRAT_Container.rat_Type = NR_RAT_Type_nr;
|
||||||
NR_UE_NR_Capability_t* UE_Capability_nr;
|
NR_UE_NR_Capability_t* UE_Capability_nr;
|
||||||
UE_Capability_nr = CALLOC(1,sizeof(NR_UE_NR_Capability_t));
|
UE_Capability_nr = CALLOC(1,sizeof(NR_UE_NR_Capability_t));
|
||||||
NR_BandNR_t *nr_bandnr;
|
|
||||||
nr_bandnr = CALLOC(1,sizeof(NR_BandNR_t));
|
if(f){
|
||||||
nr_bandnr->bandNR = 1;
|
size = fread(UE_NR_Capability_xer, 1, sizeof UE_NR_Capability_xer, f);
|
||||||
ASN_SEQUENCE_ADD(
|
if (size == 0 || size == sizeof UE_NR_Capability_xer) {
|
||||||
&UE_Capability_nr->rf_Parameters.supportedBandListNR.list,
|
LOG_E(NR_RRC,"UE Capabilities XER file %s is too large\n", UE_NR_Capability_xer_fname);
|
||||||
nr_bandnr);
|
free(UE_Capability_nr);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dec_rval = xer_decode(0, &asn_DEF_NR_UE_NR_Capability, (void *)UE_Capability_nr, UE_NR_Capability_xer, size);
|
||||||
|
assert(dec_rval.code == RC_OK);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
NR_BandNR_t *nr_bandnr;
|
||||||
|
nr_bandnr = CALLOC(1,sizeof(NR_BandNR_t));
|
||||||
|
nr_bandnr->bandNR = 1;
|
||||||
|
ASN_SEQUENCE_ADD(&UE_Capability_nr->rf_Parameters.supportedBandListNR.list,
|
||||||
|
nr_bandnr);
|
||||||
|
}
|
||||||
OAI_NR_UECapability_t *UECap;
|
OAI_NR_UECapability_t *UECap;
|
||||||
UECap = CALLOC(1,sizeof(OAI_NR_UECapability_t));
|
UECap = CALLOC(1,sizeof(OAI_NR_UECapability_t));
|
||||||
UECap->UE_NR_Capability = UE_Capability_nr;
|
UECap->UE_NR_Capability = UE_Capability_nr;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user