Commit 31e51f36 authored by Melissa Elkadi's avatar Melissa Elkadi

Processing NR_UE_Capability_info and sending

parent 04315e89
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
MESSAGE_DEF(RRC_DCCH_DATA_REQ, MESSAGE_PRIORITY_MED_PLUS, RrcDcchDataReq, rrc_dcch_data_req) MESSAGE_DEF(RRC_DCCH_DATA_REQ, MESSAGE_PRIORITY_MED_PLUS, RrcDcchDataReq, rrc_dcch_data_req)
MESSAGE_DEF(RRC_DCCH_DATA_IND, MESSAGE_PRIORITY_MED_PLUS, RrcDcchDataInd, rrc_dcch_data_ind) MESSAGE_DEF(RRC_DCCH_DATA_IND, MESSAGE_PRIORITY_MED_PLUS, RrcDcchDataInd, rrc_dcch_data_ind)
MESSAGE_DEF(RRC_PCCH_DATA_REQ, MESSAGE_PRIORITY_MED_PLUS, RrcPcchDataReq, rrc_pcch_data_req) MESSAGE_DEF(RRC_PCCH_DATA_REQ, MESSAGE_PRIORITY_MED_PLUS, RrcPcchDataReq, rrc_pcch_data_req)
MESSAGE_DEF(RRC_NRUE_CAP_INFO_IND, MESSAGE_PRIORITY_MED_PLUS, RrcDcchDataInd, rrc_nrue_cap_info_ind)
MESSAGE_DEF(RRC_DCCH_DATA_COPY_IND, MESSAGE_PRIORITY_MED_PLUS, RrcDcchDataInd, rrc_dcch_data_copy_ind) MESSAGE_DEF(RRC_DCCH_DATA_COPY_IND, MESSAGE_PRIORITY_MED_PLUS, RrcDcchDataInd, rrc_dcch_data_copy_ind)
// gNB // gNB
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
#define RRC_DCCH_DATA_REQ(mSGpTR) (mSGpTR)->ittiMsg.rrc_dcch_data_req #define RRC_DCCH_DATA_REQ(mSGpTR) (mSGpTR)->ittiMsg.rrc_dcch_data_req
#define RRC_DCCH_DATA_IND(mSGpTR) (mSGpTR)->ittiMsg.rrc_dcch_data_ind #define RRC_DCCH_DATA_IND(mSGpTR) (mSGpTR)->ittiMsg.rrc_dcch_data_ind
#define RRC_PCCH_DATA_REQ(mSGpTR) (mSGpTR)->ittiMsg.rrc_pcch_data_req #define RRC_PCCH_DATA_REQ(mSGpTR) (mSGpTR)->ittiMsg.rrc_pcch_data_req
#define RRC_NRUE_CAP_INFO_IND(mSGpTR) (mSGpTR)->ittiMsg.rrc_nrue_cap_info_ind
#define RRC_DCCH_DATA_COPY_IND(mSGpTR) (mSGpTR)->ittiMsg.rrc_dcch_data_copy_ind #define RRC_DCCH_DATA_COPY_IND(mSGpTR) (mSGpTR)->ittiMsg.rrc_dcch_data_copy_ind
// gNB // gNB
......
This diff is collapsed.
...@@ -838,6 +838,13 @@ typedef struct OAI_UECapability_s { ...@@ -838,6 +838,13 @@ typedef struct OAI_UECapability_s {
LTE_UE_EUTRA_Capability_t *UE_EUTRA_Capability; LTE_UE_EUTRA_Capability_t *UE_EUTRA_Capability;
} OAI_UECapability_t; } OAI_UECapability_t;
#define MAX_UE_NR_CAPABILITY_SIZE 255
typedef struct OAI_NR_UECapability_s {
uint8_t sdu[MAX_UE_NR_CAPABILITY_SIZE];
uint8_t sdu_size;
NR_UE_NR_Capability_t *UE_NR_Capability;
} OAI_NR_UECapability_t;
typedef struct UE_RRC_INST_s { typedef struct UE_RRC_INST_s {
Rrc_State_t RrcState; Rrc_State_t RrcState;
Rrc_Sub_State_t RrcSubState; Rrc_Sub_State_t RrcSubState;
......
...@@ -4446,8 +4446,8 @@ static int encode_CG_ConfigInfo( ...@@ -4446,8 +4446,8 @@ static int encode_CG_ConfigInfo(
/* Melissa Elkadi: None of the three following if statments are true. In this case, /* Melissa Elkadi: None of the three following if statments are true. In this case,
we never fill the container and in the gNB we are never parsing the UE_capability_info. we never fill the container and in the gNB we are never parsing the UE_capability_info.
I believe this is happening because we are not properly sending the UE_Capability_Info I believe this is happening because we are not properly sending the UE_Capability_Info
over from the LTE UE. We received the info from the NR UE but dont fill the container over from the LTE UE. We received the info from the NR UE but we dont fill the container
properly. */ properly? */
if(ue_context_pP->ue_context.UE_Capability_MRDC) { if(ue_context_pP->ue_context.UE_Capability_MRDC) {
RAT_Container_count++; RAT_Container_count++;
enc_rval = uper_encode_to_buffer(&asn_DEF_NR_UE_MRDC_Capability,NULL, enc_rval = uper_encode_to_buffer(&asn_DEF_NR_UE_MRDC_Capability,NULL,
...@@ -8149,6 +8149,7 @@ rrc_eNB_decode_dcch( ...@@ -8149,6 +8149,7 @@ rrc_eNB_decode_dcch(
for (i = 0; i < ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.count; i++) { for (i = 0; i < ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.count; i++) {
if (ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.array[i]->rat_Type == if (ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.array[i]->rat_Type ==
LTE_RAT_Type_nr) { LTE_RAT_Type_nr) {
LOG_I(RRC, "Melissa we got nrUE capabilities for UE %x\n", ctxt_pP->rnti);
if(ue_context_p->ue_context.UE_Capability_nr) { if(ue_context_p->ue_context.UE_Capability_nr) {
ASN_STRUCT_FREE(asn_DEF_NR_UE_NR_Capability,ue_context_p->ue_context.UE_Capability_nr); ASN_STRUCT_FREE(asn_DEF_NR_UE_NR_Capability,ue_context_p->ue_context.UE_Capability_nr);
ue_context_p->ue_context.UE_Capability_nr = 0; ue_context_p->ue_context.UE_Capability_nr = 0;
......
...@@ -66,6 +66,7 @@ typedef enum Rrc_Msg_Type_e { ...@@ -66,6 +66,7 @@ typedef enum Rrc_Msg_Type_e {
UE_CAPABILITY_ENQUIRY, UE_CAPABILITY_ENQUIRY,
NRUE_CAPABILITY_ENQUIRY, NRUE_CAPABILITY_ENQUIRY,
UE_CAPABILITY_INFO, UE_CAPABILITY_INFO,
NRUE_CAPABILITY_INFO,
RRC_MEASUREMENT_PROCEDURE, RRC_MEASUREMENT_PROCEDURE,
NR_UE_RRC_MEASUREMENT, NR_UE_RRC_MEASUREMENT,
} Rrc_Msg_Type_t; } Rrc_Msg_Type_t;
......
...@@ -2995,7 +2995,7 @@ static void nsa_rrc_ue_process_ueCapabilityEnquiry(void) ...@@ -2995,7 +2995,7 @@ static void nsa_rrc_ue_process_ueCapabilityEnquiry(void)
UECap->sdu_size = (enc_rval.encoded + 7) / 8; UECap->sdu_size = (enc_rval.encoded + 7) / 8;
LOG_I(NR_RRC, "[NR_RRC] NRUE Capability encoded, %d bytes (%zd bits)\n", LOG_I(NR_RRC, "[NR_RRC] NRUE Capability encoded, %d bytes (%zd bits)\n",
UECap->sdu_size, enc_rval.encoded + 7); UECap->sdu_size, enc_rval.encoded + 7);
/* Melissa: Hack. Need to add ctxt->mod_id as array indices */
NR_UE_rrc_inst[0].UECap = UECap; NR_UE_rrc_inst[0].UECap = UECap;
NR_UE_rrc_inst[0].UECapability = UECap->sdu; NR_UE_rrc_inst[0].UECapability = UECap->sdu;
NR_UE_rrc_inst[0].UECapability_size = UECap->sdu_size; NR_UE_rrc_inst[0].UECapability_size = UECap->sdu_size;
...@@ -3006,11 +3006,10 @@ static void nsa_rrc_ue_process_ueCapabilityEnquiry(void) ...@@ -3006,11 +3006,10 @@ static void nsa_rrc_ue_process_ueCapabilityEnquiry(void)
OCTET_STRING_fromBuf(&ue_CapabilityRAT_Container.ue_CapabilityRAT_Container, OCTET_STRING_fromBuf(&ue_CapabilityRAT_Container.ue_CapabilityRAT_Container,
(const char *)NR_UE_rrc_inst[0].UECapability, (const char *)NR_UE_rrc_inst[0].UECapability,
NR_UE_rrc_inst[0].UECapability_size); NR_UE_rrc_inst[0].UECapability_size);
ue_CapabilityRAT_Container.ue_CapabilityRAT_Container.buf = NR_UE_rrc_inst[0].UECapability;
ue_CapabilityRAT_Container.ue_CapabilityRAT_Container.size = NR_UE_rrc_inst[0].UECapability_size;
nsa_sendmsg_to_lte_ue(ue_CapabilityRAT_Container.ue_CapabilityRAT_Container.buf, nsa_sendmsg_to_lte_ue(ue_CapabilityRAT_Container.ue_CapabilityRAT_Container.buf,
ue_CapabilityRAT_Container.ue_CapabilityRAT_Container.size, ue_CapabilityRAT_Container.ue_CapabilityRAT_Container.size,
UE_CAPABILITY_INFO); NRUE_CAPABILITY_INFO);
} }
void process_lte_nsa_msg(nsa_msg_t *msg, int msg_len) void process_lte_nsa_msg(nsa_msg_t *msg, int msg_len)
......
...@@ -70,13 +70,6 @@ typedef enum { ...@@ -70,13 +70,6 @@ typedef enum {
nr_RadioBearerConfigX_r15=1 nr_RadioBearerConfigX_r15=1
} nsa_message_t; } nsa_message_t;
#define MAX_UE_NR_CAPABILITY_SIZE 255
typedef struct OAI_NR_UECapability_s {
uint8_t sdu[MAX_UE_NR_CAPABILITY_SIZE];
uint8_t sdu_size;
NR_UE_NR_Capability_t *UE_NR_Capability;
} OAI_NR_UECapability_t;
typedef struct NR_UE_RRC_INST_s { typedef struct NR_UE_RRC_INST_s {
NR_MeasConfig_t *meas_config; NR_MeasConfig_t *meas_config;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment