modify INITIAL_UL_RRC_MESSAGE_TRANSFER
fix build errors about nrUE c-plane is ok
This commit is contained in:
@@ -601,6 +601,9 @@ int main( int argc, char **argv ) {
|
||||
protocol_ctxt_t ctxt_pP = {0};
|
||||
ctxt_pP.enb_flag = ENB_FLAG_NO;
|
||||
ctxt_pP.rnti = 0x1234;
|
||||
RC.nrrrc = (gNB_RRC_INST **)malloc(1*sizeof(gNB_RRC_INST *));
|
||||
RC.nrrrc[0] = (gNB_RRC_INST*)malloc(sizeof(gNB_RRC_INST));
|
||||
RC.nrrrc[0]->node_type = ngran_gNB;
|
||||
rrc_ue_generate_RRCSetupRequest(&ctxt_pP, 0);
|
||||
if (create_tasks_nrue(1) < 0) {
|
||||
printf("cannot create ITTI tasks\n");
|
||||
|
||||
@@ -169,19 +169,45 @@ int CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
|
||||
f1ap_cu_inst[rrc_inst].f1ap_ue[f1ap_uid].du_ue_f1ap_id = du_ue_f1ap_id;
|
||||
|
||||
if (RC.nrrrc[GNB_INSTANCE_TO_MODULE_ID(instance)]->node_type == ngran_gNB_CU) {
|
||||
NR_RRC_MAC_CCCH_DATA_IND (message_p).frame = 0;
|
||||
NR_RRC_MAC_CCCH_DATA_IND (message_p).sub_frame = 0;
|
||||
NR_RRC_MAC_CCCH_DATA_IND (message_p).sdu_size = ccch_sdu_len;
|
||||
NR_RRC_MAC_CCCH_DATA_IND (message_p).gnb_index = rrc_inst; // CU instance
|
||||
NR_RRC_MAC_CCCH_DATA_IND (message_p).rnti = rnti;
|
||||
NR_RRC_MAC_CCCH_DATA_IND (message_p).CC_id = CC_id;
|
||||
itti_send_msg_to_task (TASK_RRC_GNB, instance, message_p);
|
||||
if(0) {
|
||||
NR_RRC_MAC_CCCH_DATA_IND (message_p).frame = 0;
|
||||
NR_RRC_MAC_CCCH_DATA_IND (message_p).sub_frame = 0;
|
||||
NR_RRC_MAC_CCCH_DATA_IND (message_p).sdu_size = ccch_sdu_len;
|
||||
NR_RRC_MAC_CCCH_DATA_IND (message_p).gnb_index = rrc_inst; // CU instance
|
||||
NR_RRC_MAC_CCCH_DATA_IND (message_p).rnti = rnti;
|
||||
NR_RRC_MAC_CCCH_DATA_IND (message_p).CC_id = CC_id;
|
||||
itti_send_msg_to_task (TASK_RRC_GNB, instance, message_p);
|
||||
}
|
||||
|
||||
protocol_ctxt_t ctxt;
|
||||
ctxt.module_id = instance;
|
||||
ctxt.instance = instance;
|
||||
ctxt.rnti = 0x1234; //f1ap_get_rnti_by_cu_id(&f1ap_cu_inst[instance], cu_ue_f1ap_id);
|
||||
ctxt.enb_flag = 1;
|
||||
ctxt.eNB_index = 0;
|
||||
ctxt.configured = 1;
|
||||
mem_block_t *mb = get_free_mem_block(ie->value.choice.RRCContainer.size,__func__);
|
||||
memcpy((void*)mb->data,(void*)ie->value.choice.RRCContainer.buf,ie->value.choice.RRCContainer.size);
|
||||
LOG_I(F1AP, "Calling pdcp_data_ind for UE RNTI %x srb_id %lu with size %ld (DCCH) \n", ctxt.rnti, 1, ie->value.choice.RRCContainer.size);
|
||||
|
||||
LOG_I(F1AP, "%s() RRCContainer size %lu: ", __func__, ie->value.choice.RRCContainer.size);
|
||||
for (int i = 0; i < ie->value.choice.RRCContainer.size; i++)
|
||||
printf("%02x ", mb->data[i]);
|
||||
printf("\n");
|
||||
|
||||
pdcp_data_ind (&ctxt,
|
||||
1, // srb_flag
|
||||
0, // embms_flag
|
||||
1,
|
||||
ie->value.choice.RRCContainer.size,
|
||||
mb);
|
||||
return 0;
|
||||
} else {
|
||||
RRC_MAC_CCCH_DATA_IND (message_p).frame = 0;
|
||||
RRC_MAC_CCCH_DATA_IND (message_p).sub_frame = 0;
|
||||
RRC_MAC_CCCH_DATA_IND (message_p).sdu_size = ccch_sdu_len;
|
||||
RRC_MAC_CCCH_DATA_IND (message_p).enb_index = rrc_inst; // CU instance
|
||||
RRC_MAC_CCCH_DATA_IND (message_p).rnti = rnti;
|
||||
RRC_MAC_CCCH_DATA_IND (message_p).frame = 0;
|
||||
RRC_MAC_CCCH_DATA_IND (message_p).sub_frame = 0;
|
||||
RRC_MAC_CCCH_DATA_IND (message_p).sdu_size = ccch_sdu_len;
|
||||
RRC_MAC_CCCH_DATA_IND (message_p).enb_index = rrc_inst; // CU instance
|
||||
RRC_MAC_CCCH_DATA_IND (message_p).rnti = rnti;
|
||||
RRC_MAC_CCCH_DATA_IND (message_p).CC_id = CC_id;
|
||||
itti_send_msg_to_task (TASK_RRC_ENB, instance, message_p);
|
||||
}
|
||||
|
||||
@@ -175,6 +175,15 @@ void *F1AP_DU_task(void *arg) {
|
||||
&received_msg->ittiMsg.sctp_data_ind);
|
||||
break;
|
||||
|
||||
case F1AP_INITIAL_UL_RRC_MESSAGE: // to rrc
|
||||
LOG_I(F1AP, "DU Task Received F1AP_INITIAL_UL_RRC_MESSAGE\n");
|
||||
|
||||
f1ap_initial_ul_rrc_message_t *msg = &F1AP_INITIAL_UL_RRC_MESSAGE(received_msg);
|
||||
DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(0,0,0,msg->crnti,
|
||||
msg->rrc_container,
|
||||
msg->rrc_container_length);
|
||||
break;
|
||||
|
||||
case F1AP_UL_RRC_MESSAGE: // to rrc
|
||||
LOG_I(F1AP, "DU Task Received F1AP_UL_RRC_MESSAGE\n");
|
||||
if (RC.nrrrc[0]->node_type == ngran_gNB_DU) {
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
|
||||
extern uint16_t sf_ahead;
|
||||
int macrlc_has_f1 = 0;
|
||||
ngran_node_t node_type = ngran_gNB;
|
||||
extern ngran_node_t node_type;
|
||||
|
||||
extern int config_check_band_frequencies(int ind, int16_t band, uint64_t downlink_frequency,
|
||||
int32_t uplink_frequency_offset, uint32_t frame_type);
|
||||
@@ -1477,7 +1477,6 @@ void gNB_app_handle_f1ap_setup_resp(f1ap_setup_resp_t *resp) {
|
||||
|
||||
void set_node_type(void) {
|
||||
int j;
|
||||
// ngran_node_t node_type;
|
||||
paramdef_t MacRLC_Params[] = MACRLCPARAMS_DESC;
|
||||
paramlist_def_t MacRLC_ParamList = {CONFIG_STRING_MACRLC_LIST,NULL,0};
|
||||
paramdef_t GNBParams[] = GNBPARAMS_DESC;
|
||||
|
||||
@@ -47,7 +47,7 @@ hash_table_t *pdcp_coll_p;
|
||||
static uint64_t pdcp_optmask;
|
||||
#include "common/ran_context.h"
|
||||
extern RAN_CONTEXT_t RC;
|
||||
extern ngran_node_t node_type;
|
||||
ngran_node_t node_type = ngran_gNB;
|
||||
uint8_t first_dcch = 0;
|
||||
|
||||
/****************************************************************************/
|
||||
@@ -623,15 +623,11 @@ static void deliver_sdu_srb(protocol_ctxt_t *ctxt_pP, void *_ue, nr_pdcp_entity_
|
||||
int srb_id;
|
||||
int i;
|
||||
|
||||
if (NODE_IS_CU(RC.nrrrc[ctxt_pP->module_id]->node_type)) {
|
||||
nr_rrc_data_ind( ctxt_pP, 1, size, buf);
|
||||
if (ccch_or_dcch == 0) {
|
||||
nr_rrc_data_ind_ccch( ctxt_pP, 1, size, buf);
|
||||
ccch_or_dcch = 1;
|
||||
} else {
|
||||
if (ccch_or_dcch == 0) {
|
||||
nr_rrc_data_ind_ccch( ctxt_pP, 1, size, buf);
|
||||
ccch_or_dcch = 1;
|
||||
} else {
|
||||
nr_rrc_data_ind( ctxt_pP, 1, size, buf);
|
||||
}
|
||||
nr_rrc_data_ind( ctxt_pP, 1, size, buf);
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
@@ -474,6 +474,7 @@ rb_found:
|
||||
"Can't be CU, bad node type %d\n", type);
|
||||
|
||||
if (NODE_IS_DU(type) && is_srb == 1) {
|
||||
MessageDef *msg;
|
||||
if (ccch_flag) {
|
||||
/* for rfsim, because UE send RRCSetupRequest in SRB1 */
|
||||
asn_dec_rval_t dec_rval;
|
||||
@@ -493,7 +494,17 @@ rb_found:
|
||||
if (ul_ccch_msg->message.present == NR_UL_CCCH_MessageType_PR_c1) {
|
||||
if (ul_ccch_msg->message.choice.c1->present == NR_UL_CCCH_MessageType__c1_PR_rrcSetupRequest) {
|
||||
LOG_I(RLC, "[MSG] RRC Setup Request\n");
|
||||
DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(0,0,0,ue->rnti,(uint8_t *)buf,size);
|
||||
// DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(0,0,0,ue->rnti,(uint8_t *)buf,size);
|
||||
msg = itti_alloc_new_message(TASK_RLC_ENB, F1AP_INITIAL_UL_RRC_MESSAGE);
|
||||
F1AP_INITIAL_UL_RRC_MESSAGE(msg).gNB_DU_ue_id = 0;
|
||||
F1AP_INITIAL_UL_RRC_MESSAGE(msg).mcc = RC.nrrrc[0]->configuration.mcc[0];
|
||||
F1AP_INITIAL_UL_RRC_MESSAGE(msg).mnc = RC.nrrrc[0]->configuration.mnc[0];
|
||||
F1AP_INITIAL_UL_RRC_MESSAGE(msg).mnc_digit_length = RC.nrrrc[0]->configuration.mnc_digit_length[0];
|
||||
F1AP_INITIAL_UL_RRC_MESSAGE(msg).nr_cellid = RC.nrrrc[0]->nr_cellid;
|
||||
F1AP_INITIAL_UL_RRC_MESSAGE(msg).crnti = ue->rnti;
|
||||
F1AP_INITIAL_UL_RRC_MESSAGE(msg).rrc_container = (unsigned char *)buf;
|
||||
F1AP_INITIAL_UL_RRC_MESSAGE(msg).rrc_container_length = size;
|
||||
itti_send_msg_to_task(TASK_DU_F1, ENB_MODULE_ID_TO_INSTANCE(0), msg);
|
||||
ccch_flag = 0;
|
||||
return;
|
||||
}
|
||||
@@ -501,7 +512,7 @@ rb_found:
|
||||
}
|
||||
}
|
||||
|
||||
MessageDef *msg = itti_alloc_new_message(TASK_RLC_ENB, F1AP_UL_RRC_MESSAGE);
|
||||
msg = itti_alloc_new_message(TASK_RLC_ENB, F1AP_UL_RRC_MESSAGE);
|
||||
F1AP_UL_RRC_MESSAGE(msg).rnti = ue->rnti;
|
||||
F1AP_UL_RRC_MESSAGE(msg).srb_id = rb_id;
|
||||
F1AP_UL_RRC_MESSAGE(msg).rrc_container = (unsigned char *)buf;
|
||||
|
||||
Reference in New Issue
Block a user