Commit 1b95baaf authored by Raymond Knopp's avatar Raymond Knopp

update F1AP to R16.3.1. testing with OTA eNB

parent d00b966d
......@@ -804,12 +804,12 @@ add_dependencies(X2AP_ENB X2AP_LIB rrc_flag x2_flag)
# F1AP
##############
add_list1_option(F1AP_RELEASE R15 "F1AP ASN.1 grammar version" R15)
add_list1_option(F1AP_RELEASE R16 "F1AP ASN.1 grammar version" R16)
set(F1AP_DIR ${OPENAIR2_DIR}/F1AP)
if (${F1AP_RELEASE} STREQUAL "R15")
make_version(F1AP_VERSION 15 2 1)
set (ASN1RELDIR R15.2.1)
endif(${F1AP_RELEASE} STREQUAL "R15")
if (${F1AP_RELEASE} STREQUAL "R16")
make_version(F1AP_VERSION 16 3 1)
set (ASN1RELDIR R16.3.1)
endif(${F1AP_RELEASE} STREQUAL "R16")
add_definitions(-DF1AP_VERSION=${F1AP_VERSION})
set(F1AP_ASN_DIR ${F1AP_DIR}/MESSAGES/ASN1/${ASN1RELDIR})
set(F1AP_ASN_FILES
......
......@@ -48,6 +48,14 @@ int N_RB_DL_array[6] = { 6, 15, 25, 50, 75, 100 };
extern RAN_CONTEXT_t RC;
void pdsch_procedures(PHY_VARS_eNB *eNB,
L1_rxtx_proc_t *proc,
int harq_pid,
LTE_eNB_DLSCH_t *dlsch,
LTE_eNB_DLSCH_t *dlsch1);
void init_sss(void);
int
l1_north_init_eNB () {
int i,j;
......@@ -364,7 +372,7 @@ void fill_subframe_mask(PHY_VARS_eNB *eNB) {
eNB->dlsch[0][0]->harq_ids[0][sf]=0;
eNB->dlsch[0][0]->rnti=0x1234;
dlsch_harq->nb_rb=48;
dlsch_harq->rb_alloc[0]=0xffffffffffff;
dlsch_harq->rb_alloc[0]=(uint32_t)0xffffffff;
dlsch_harq->Qm=2;
dlsch_harq->Nl=1;
dlsch_harq->pdsch_start=1;
......
......@@ -520,6 +520,9 @@ int generate_eNB_ulsch_params_from_dci(PHY_VARS_eNB *PHY_vars_eNB,
void dump_ulsch(PHY_VARS_eNB *phy_vars_eNB,int frame, int subframe, uint8_t UE_id,int round);
void dump_ulsch_stats(PHY_VARS_eNB *eNB,int frame);
void dump_uci_stats(PHY_VARS_eNB *eNB,int frame);
......
......@@ -42,7 +42,7 @@ int16_t find_uci(uint16_t rnti, int frame, int subframe, PHY_VARS_eNB *eNB,find_
int16_t first_free_index=-1;
AssertFatal(eNB!=NULL,"eNB is null\n");
for (i=0; i<NUMBER_OF_UCI_VARS_MAX; i++) {
for (i=0; i<NUMBER_OF_UCI_MAX; i++) {
if ((eNB->uci_vars[i].active >0) &&
(eNB->uci_vars[i].rnti==rnti) &&
(eNB->uci_vars[i].frame==frame) &&
......
......@@ -507,7 +507,7 @@ typedef struct PHY_VARS_eNB_s {
LTE_eNB_MPDCCH mpdcch_vars[2];
LTE_eNB_PRACH prach_vars_br;
LTE_eNB_COMMON common_vars;
LTE_eNB_UCI uci_vars[NUMBER_OF_UCI_VARS_MAX];
LTE_eNB_UCI uci_vars[NUMBER_OF_UCI_MAX];
LTE_eNB_SRS srs_vars[NUMBER_OF_UE_MAX];
LTE_eNB_PBCH pbch;
LTE_eNB_PUSCH *pusch_vars[NUMBER_OF_UE_MAX];
......
......@@ -213,13 +213,13 @@ void handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,int frame,int subframe,L1_rxtx_pro
UE_id = find_dlsch(rel8->rnti,eNB,SEARCH_EXIST_OR_FREE);
if( (UE_id<0) || (UE_id>=NUMBER_OF_UE_MAX) ) {
if( (UE_id<0) || (UE_id>=NUMBER_OF_DLSCH_MAX) ) {
LOG_E(PHY,"illegal UE_id found!!! rnti %04x UE_id %d\n",rel8->rnti,UE_id);
return;
}
//AssertFatal(UE_id!=-1,"no free or exiting dlsch_context\n");
//AssertFatal(UE_id<NUMBER_OF_UE_MAX,"returned UE_id %d >= %d(NUMBER_OF_UE_MAX)\n",UE_id,NUMBER_OF_UE_MAX);
//AssertFatal(UE_id<NUMBER_OF_DLSCH_MAX,"returned UE_id %d >= %d(NUMBER_OF_DLSCHMAX)\n",UE_id,NUMBER_OF_DLSCH_MAX);
dlsch0 = eNB->dlsch[UE_id][0];
dlsch1 = eNB->dlsch[UE_id][1];
......@@ -295,7 +295,7 @@ void handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,int frame,int subframe,L1_rxtx_pro
if ((rel13->pdsch_payload_type <2) && (rel13->ue_type>0)) { // this is a BR/CE UE and SIB1-BR/SI-BR
UE_id = find_dlsch(rel8->rnti,eNB,SEARCH_EXIST_OR_FREE);
AssertFatal(UE_id!=-1,"no free or exiting dlsch_context\n");
AssertFatal(UE_id<NUMBER_OF_UE_MAX,"returned UE_id %d >= %d(NUMBER_OF_UE_MAX)\n",UE_id,NUMBER_OF_UE_MAX);
AssertFatal(UE_id<NUMBER_OF_DLSCH_MAX,"returned UE_id %d >= %d(NUMBER_OF_DLSCH_MAX)\n",UE_id,NUMBER_OF_DLSCH_MAX);
dlsch0 = eNB->dlsch[UE_id][0];
dlsch0->harq_mask = 1;
dlsch0_harq = dlsch0->harq_processes[0];
......@@ -370,7 +370,7 @@ void handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,int frame,int subframe,L1_rxtx_pro
} else {
UE_id = find_dlsch(rel8->rnti,eNB,SEARCH_EXIST_OR_FREE);
AssertFatal(UE_id!=-1,"no free or exiting dlsch_context\n");
AssertFatal(UE_id<NUMBER_OF_UE_MAX,"returned UE_id %d >= %d(NUMBER_OF_UE_MAX)\n",UE_id,NUMBER_OF_UE_MAX);
AssertFatal(UE_id<NUMBER_OF_DLSCH_MAX,"returned UE_id %d >= %d(NUMBER_OF_DLSCH_MAX)\n",UE_id,NUMBER_OF_DLSCH_MAX);
dlsch0 = eNB->dlsch[UE_id][0];
dlsch1 = eNB->dlsch[UE_id][1];
dlsch0->sib1_br_flag=0;
......@@ -664,7 +664,7 @@ void handle_srs_pdu(PHY_VARS_eNB *eNB,nfapi_ul_config_request_pdu_t *ul_config_p
if (NFAPI_MODE==NFAPI_MODE_VNF) return;
for (i=0; i<NUMBER_OF_UE_MAX; i++) {
for (i=0; i<NUMBER_OF_SRS_MAX; i++) {
if (eNB->soundingrs_ul_config_dedicated[i].active==1) continue;
eNB->soundingrs_ul_config_dedicated[i].active = 1;
......@@ -680,7 +680,7 @@ void handle_srs_pdu(PHY_VARS_eNB *eNB,nfapi_ul_config_request_pdu_t *ul_config_p
break;
}
AssertFatal(i<NUMBER_OF_UE_MAX,"No room for SRS processing\n");
AssertFatal(i<NUMBER_OF_SRS_MAX,"No room for SRS processing\n");
}
void handle_nfapi_ul_pdu(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc,
......@@ -784,7 +784,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO, L1_rxtx_proc_t *proc) {
nfapi_dl_config_request_pdu_t *dl_config_pdu;
nfapi_hi_dci0_request_pdu_t *hi_dci0_req_pdu;
nfapi_ul_config_request_pdu_t *ul_config_pdu;
int i;
eNB->pdcch_vars[subframe&1].num_pdcch_symbols = number_pdcch_ofdm_symbols;
eNB->pdcch_vars[subframe&1].num_dci = 0;
eNB->phich_vars[subframe&1].num_hi = 0;
......@@ -815,8 +815,8 @@ void schedule_response(Sched_Rsp_t *Sched_INFO, L1_rxtx_proc_t *proc) {
// clear DCI allocation maps for new subframe
if (NFAPI_MODE!=NFAPI_MODE_VNF)
for (i=0; i<NUMBER_OF_UE_MAX; i++) {
if (eNB->ulsch[i]) {
for (volatile int i=0; i<NUMBER_OF_ULSCH_MAX; i++) {
if (eNB->ulsch[i]!=NULL) {
ulsch_harq = eNB->ulsch[i]->harq_processes[harq_pid];
ulsch_harq->dci_alloc=0;
ulsch_harq->rar_alloc=0;
......@@ -824,7 +824,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO, L1_rxtx_proc_t *proc) {
}
}
for (i=0; i<number_dl_pdu; i++) {
for (int i=0; i<number_dl_pdu; i++) {
dl_config_pdu = &DL_req->dl_config_request_body.dl_config_pdu_list[i];
//LOG_D(PHY,"NFAPI: dl_pdu %d : type %d\n",i,dl_config_pdu->pdu_type);
......@@ -973,7 +973,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO, L1_rxtx_proc_t *proc) {
}
if (NFAPI_MODE!=NFAPI_MODE_VNF)
for (i=0; i<number_hi_dci0_pdu; i++) {
for (int i=0; i<number_hi_dci0_pdu; i++) {
hi_dci0_req_pdu = &HI_DCI0_req->hi_dci0_request_body.hi_dci0_pdu_list[i];
LOG_D(PHY,"NFAPI: hi_dci0_pdu %d : type %d\n",i,hi_dci0_req_pdu->pdu_type);
......@@ -1003,7 +1003,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO, L1_rxtx_proc_t *proc) {
number_ul_pdu=0;
}
} else {
for (i=0; i<number_ul_pdu; i++) {
for (int i=0; i<number_ul_pdu; i++) {
ul_config_pdu = &UL_req->ul_config_request_body.ul_config_pdu_list[i];
LOG_D(PHY,"NFAPI: ul_pdu %d : type %d\n",i,ul_config_pdu->pdu_type);
AssertFatal(ul_config_pdu->pdu_type == NFAPI_UL_CONFIG_ULSCH_PDU_TYPE ||
......
......@@ -56,20 +56,20 @@ extern RAN_CONTEXT_t RC;
nfapi_ue_release_request_body_t release_rntis;
int16_t get_hundred_times_delta_IF_eNB(PHY_VARS_eNB *eNB,uint16_t UE_id,uint8_t harq_pid, uint8_t bw_factor) {
int16_t get_hundred_times_delta_IF_eNB(PHY_VARS_eNB *eNB,uint16_t ULSCH_id,uint8_t harq_pid, uint8_t bw_factor) {
uint32_t Nre,sumKr,MPR_x100,Kr,r;
uint16_t beta_offset_pusch;
DevAssert( UE_id < NUMBER_OF_UE_MAX+1 );
DevAssert( ULSCH_id < NUMBER_OF_ULSCH_MAX+1 );
DevAssert( harq_pid < 8 );
Nre = eNB->ulsch[UE_id]->harq_processes[harq_pid]->Nsymb_initial *
eNB->ulsch[UE_id]->harq_processes[harq_pid]->nb_rb*12;
Nre = eNB->ulsch[ULSCH_id]->harq_processes[harq_pid]->Nsymb_initial *
eNB->ulsch[ULSCH_id]->harq_processes[harq_pid]->nb_rb*12;
sumKr = 0;
for (r=0; r<eNB->ulsch[UE_id]->harq_processes[harq_pid]->C; r++) {
if (r<eNB->ulsch[UE_id]->harq_processes[harq_pid]->Cminus)
Kr = eNB->ulsch[UE_id]->harq_processes[harq_pid]->Kminus;
for (r=0; r<eNB->ulsch[ULSCH_id]->harq_processes[harq_pid]->C; r++) {
if (r<eNB->ulsch[ULSCH_id]->harq_processes[harq_pid]->Cminus)
Kr = eNB->ulsch[ULSCH_id]->harq_processes[harq_pid]->Kminus;
else
Kr = eNB->ulsch[UE_id]->harq_processes[harq_pid]->Kplus;
Kr = eNB->ulsch[ULSCH_id]->harq_processes[harq_pid]->Kplus;
sumKr += Kr;
}
......@@ -82,14 +82,14 @@ int16_t get_hundred_times_delta_IF_eNB(PHY_VARS_eNB *eNB,uint16_t UE_id,uint8_t
// FK 20140908 sumKr is only set after the ulsch_encoding
beta_offset_pusch = 8;
//(eNB->ulsch[UE_id]->harq_processes[harq_pid]->control_only == 1) ? eNB->ulsch[UE_id]->beta_offset_cqi_times8:8;
DevAssert( UE_id < NUMBER_OF_UE_MAX );
DevAssert( ULSCH_id < NUMBER_OF_ULSCH_MAX );
//#warning "This condition happens sometimes. Need more investigation" // navid
//DevAssert( MPR_x100/6 < 100 );
if (1==1) { //eNB->ul_power_control_dedicated[UE_id].deltaMCS_Enabled == 1) {
// This is the formula from Section 5.1.1.1 in 36.213 10*log10(deltaIF_PUSCH = (2^(MPR*Ks)-1)*beta_offset_pusch)
if (bw_factor == 1) {
uint8_t nb_rb = eNB->ulsch[UE_id]->harq_processes[harq_pid]->nb_rb;
uint8_t nb_rb = eNB->ulsch[ULSCH_id]->harq_processes[harq_pid]->nb_rb;
return(hundred_times_delta_TF[MPR_x100/6]+10*dB_fixed_times10((beta_offset_pusch)>>3)) + hundred_times_log10_NPRB[nb_rb-1];
} else
return(hundred_times_delta_TF[MPR_x100/6]+10*dB_fixed_times10((beta_offset_pusch)>>3));
......@@ -100,21 +100,21 @@ int16_t get_hundred_times_delta_IF_eNB(PHY_VARS_eNB *eNB,uint16_t UE_id,uint8_t
int16_t get_hundred_times_delta_IF_mac(module_id_t module_idP, uint8_t CC_id, rnti_t rnti, uint8_t harq_pid) {
int8_t UE_id;
int8_t ULSCH_id;
if ((RC.eNB == NULL) || (module_idP > RC.nb_inst) || (CC_id > RC.nb_CC[module_idP])) {
LOG_E(PHY,"get_UE_stats: No eNB found (or not allocated) for Mod_id %d,CC_id %d\n",module_idP,CC_id);
return -1;
}
UE_id = find_ulsch( rnti, RC.eNB[module_idP][CC_id],SEARCH_EXIST);
ULSCH_id = find_ulsch( rnti, RC.eNB[module_idP][CC_id],SEARCH_EXIST);
if (UE_id == -1) {
if (ULSCH_id == -1) {
// not found
return 0;
}
return get_hundred_times_delta_IF_eNB( RC.eNB[module_idP][CC_id], UE_id, harq_pid, 0 );
return get_hundred_times_delta_IF_eNB( RC.eNB[module_idP][CC_id], ULSCH_id, harq_pid, 0 );
}
int oai_nfapi_rach_ind(nfapi_rach_indication_t *rach_ind);
......@@ -502,9 +502,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
int do_meas) {
int frame=proc->frame_tx;
int subframe=proc->subframe_tx;
uint32_t i,aa;
uint8_t harq_pid;
int16_t UE_id=0;
uint8_t num_pdcch_symbols=0;
uint8_t num_dci=0;
uint8_t num_mdci = 0;
......@@ -519,11 +517,10 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_TX+(eNB->CC_id),1);
if (do_meas==1) start_meas(&eNB->phy_proc_tx);
if (do_meas==1) start_meas(&eNB->dlsch_common_and_dci);
// clear the transmit data array for the current subframe
for (aa = 0; aa < fp->nb_antenna_ports_eNB; aa++) {
for (int aa = 0; aa < fp->nb_antenna_ports_eNB; aa++) {
if (eNB->use_DTX==0)
memcpy(&eNB->common_vars.txdataF[aa][subframe * fp->ofdm_symbol_size * (fp->symbols_per_tti)],
&eNB->subframe_mask[aa][subframe*fp->ofdm_symbol_size*fp->symbols_per_tti],
......@@ -563,7 +560,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
ul_frame = pdcch_alloc2ul_frame (fp, frame, subframe);
// clear previous allocation information for all UEs
for (i = 0; i < NUMBER_OF_UE_MAX; i++) {
for (volatile int i = 0; i < NUMBER_OF_DLSCH_MAX; i++) {
if (eNB->dlsch[i][0])
eNB->dlsch[i][0]->subframe_tx[subframe] = 0;
}
......@@ -572,7 +569,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
//if ((ul_subframe < 10)&&
// (subframe_select(fp,ul_subframe)==SF_UL)) { // This means that there is a potential UL subframe that will be scheduled here
if (ul_subframe < 10) { // This means that there is a potential UL subframe that will be scheduled here
for (i=0; i<NUMBER_OF_UE_MAX; i++) {
for (volatile int i=0; i<NUMBER_OF_DLSCH_MAX; i++) {
if (eNB->ulsch[i] && eNB->ulsch[i]->ue_type >0) harq_pid = 0;
else
......@@ -658,9 +655,9 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
// Now scan UE specific DLSCH
LTE_eNB_DLSCH_t *dlsch0,*dlsch1;
for (UE_id=0; UE_id<NUMBER_OF_UE_MAX; UE_id++) {
dlsch0 = eNB->dlsch[(uint8_t)UE_id][0];
dlsch1 = eNB->dlsch[(uint8_t)UE_id][1];
for (int DLSCH_id=0; DLSCH_id<NUMBER_OF_DLSCH_MAX; DLSCH_id++) {
dlsch0 = eNB->dlsch[(uint8_t)DLSCH_id][0];
dlsch1 = eNB->dlsch[(uint8_t)DLSCH_id][1];
if ((dlsch0)&&(dlsch0->rnti>0)&&
#ifdef PHY_TX_THREAD
......@@ -670,12 +667,13 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
#endif
) {
// get harq_pid
harq_pid = dlsch0->harq_ids[frame%2][subframe];
harq_pid = dlsch0->harq_ids[frame%2][subframe];
//AssertFatal(harq_pid>=0,"harq_pid is negative\n");
if((harq_pid < 0) || (harq_pid >= dlsch0->Mdlharq)) {
if (dlsch0->ue_type==0)
LOG_E(PHY,"harq_pid:%d corrupt must be 0-7 UE_id:%d frame:%d subframe:%d rnti:%x [ %1d.%1d.%1d.%1d.%1d.%1d.%1d.%1d\n", harq_pid,UE_id,frame,subframe,dlsch0->rnti,
LOG_E(PHY,"harq_pid:%d corrupt must be 0-7 DLSCH_id:%d frame:%d subframe:%d rnti:%x [ %1d.%1d.%1d.%1d.%1d.%1d.%1d.%1d\n", harq_pid,DLSCH_id,frame,subframe,dlsch0->rnti,
dlsch0->harq_ids[frame%2][0],
dlsch0->harq_ids[frame%2][1],
dlsch0->harq_ids[frame%2][2],
......@@ -689,7 +687,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
proc,
harq_pid,
dlsch0,
&eNB->UE_stats[(uint32_t)UE_id])) {
&eNB->UE_stats[(uint32_t)DLSCH_id])) {
// if we generate dlsch, we must generate pdsch
pdsch_procedures(eNB,
proc,
......@@ -724,6 +722,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
if (do_meas==1) stop_meas(&eNB->phy_proc_tx);
}
/* This has to be updated with FAPI structures*/
void srs_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) {
LTE_DL_FRAME_PARMS *fp = &eNB->frame_parms;
......@@ -735,7 +734,7 @@ void srs_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) {
// Do SRS processing
// check if there is SRS and we have to use shortened format
// TODO: check for exceptions in transmission of SRS together with ACK/NACK
for (i = 0; i < NUMBER_OF_UE_MAX; i++) {
for (i = 0; i < NUMBER_OF_SRS_MAX; i++) {
if (eNB->soundingrs_ul_config_dedicated[i].active == 1) {
if (lte_srs_channel_estimation (fp, &eNB->common_vars, &eNB->srs_vars[i], &eNB->soundingrs_ul_config_dedicated[i], subframe, 0 /*eNB_id */ )) {
LOG_E (PHY, "problem processing SRS\n");
......@@ -798,7 +797,7 @@ uci_procedures(PHY_VARS_eNB *eNB,
LTE_eNB_UCI *uci = NULL;
LTE_DL_FRAME_PARMS *fp = &(eNB->frame_parms);
for (int i = 0; i < NUMBER_OF_UCI_VARS_MAX; i++) {
for (int i = 0; i < NUMBER_OF_UCI_MAX; i++) {
uci = &(eNB->uci_vars[i]);
if ((uci->active == 1) && (uci->frame == frame) && (uci->subframe == subframe)) {
......@@ -1280,7 +1279,7 @@ uci_procedures(PHY_VARS_eNB *eNB,
#ifdef DEBUG_PHY_PROC
LOG_D (PHY, "[eNB %d][PDSCH %x] Frame %d subframe %d ACK/NAK metric 0 %d, metric 1 %d, (%d,%d)\n", eNB->Mod_id,
eNB->dlsch[UE_id][0]->rnti, frame, subframe, metric0, metric1, pucch_b0b1[0], pucch_b0b1[1]);
eNB->dlsch[DLSCH_id][0]->rnti, frame, subframe, metric0, metric1, pucch_b0b1[0], pucch_b0b1[1]);
#endif
}
......@@ -1303,7 +1302,7 @@ uci_procedures(PHY_VARS_eNB *eNB,
}
}
} // end if ((uci->active == 1) && (uci->frame == frame) && (uci->subframe == subframe)) {
} // end loop for (int i = 0; i < NUMBER_OF_UE_MAX; i++) {
} // end loop for (int i = 0; i < NUMBER_OF_UCI_MAX; i++) {
}
void postDecode(L1_rxtx_proc_t *proc, notifiedFIFO_elt_t *req) {
......@@ -1415,7 +1414,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) {
const int frame = proc->frame_rx;
uint32_t harq_pid0 = subframe2harq_pid(&eNB->frame_parms,frame,subframe);
for (i = 0; i < NUMBER_OF_UE_MAX; i++) {
for (i = 0; i < NUMBER_OF_ULSCH_MAX; i++) {
ulsch = eNB->ulsch[i];
if (ulsch->ue_type > 0) harq_pid = 0;
......@@ -1496,7 +1495,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) {
ulsch->harq_mask &= ~(1 << harq_pid);
LOG_W (PHY, "Removing stale ULSCH config for UE %x harq_pid %d (harq_mask is now 0x%2.2x)\n", ulsch->rnti, harq_pid, ulsch->harq_mask);
}
} // for (i=0; i<NUMBER_OF_UE_MAX; i++)
} // for (i=0; i<NUMBER_OF_ULSCH_MAX; i++)
while (proc->nbDecode > 0) {
notifiedFIFO_elt_t *req=pullTpool(proc->respDecode, proc->threadPool);
......@@ -1664,7 +1663,7 @@ void fill_rx_indication(PHY_VARS_eNB *eNB,
* Release the harq process if its round is >= 'after_rounds'
*/
static void do_release_harq(PHY_VARS_eNB *eNB,
int UE_id,
int DLSCH_id,
int tb,
uint16_t frame,
uint8_t subframe,
......@@ -1679,10 +1678,10 @@ static void do_release_harq(PHY_VARS_eNB *eNB,
int harq_pid;
int subframe_tx;
int frame_tx;
AssertFatal(UE_id != -1, "No existing dlsch context\n");
AssertFatal(UE_id < NUMBER_OF_UE_MAX, "Returned UE_id %d >= %d (NUMBER_OF_UE_MAX)\n", UE_id, NUMBER_OF_UE_MAX);
dlsch0 = eNB->dlsch[UE_id][0];
dlsch1 = eNB->dlsch[UE_id][1];
AssertFatal(DLSCH_id != -1, "No existing dlsch context\n");
AssertFatal(DLSCH_id < NUMBER_OF_DLSCH_MAX, "Returned DLSCH_id %d >= %d (NUMBER_OF_DLSCH_MAX)\n", DLSCH_id, NUMBER_OF_DLSCH_MAX);
dlsch0 = eNB->dlsch[DLSCH_id][0];
dlsch1 = eNB->dlsch[DLSCH_id][1];
if (eNB->frame_parms.frame_type == FDD) {
subframe_tx = (subframe + 6) % 10;
......@@ -1781,13 +1780,13 @@ static void do_release_harq(PHY_VARS_eNB *eNB,
} // end if TDD
}
static void release_harq(PHY_VARS_eNB *eNB,int UE_id,int tb,uint16_t frame,uint8_t subframe,uint16_t mask, int is_ack) {
static void release_harq(PHY_VARS_eNB *eNB,int DLSCH_id,int tb,uint16_t frame,uint8_t subframe,uint16_t mask, int is_ack) {
/*
* Maximum number of DL transmissions = 4.
* TODO: get the value from configuration.
* If is_ack is true then we release immediately. The value -1 can be used for that.
*/
do_release_harq(eNB, UE_id, tb, frame, subframe, mask, is_ack ? -1 : 4);
do_release_harq(eNB, DLSCH_id, tb, frame, subframe, mask, is_ack ? -1 : 4);
}
int getM(PHY_VARS_eNB *eNB,int frame,int subframe) {
......@@ -1867,14 +1866,14 @@ void fill_ulsch_cqi_indication (PHY_VARS_eNB *eNB, uint16_t frame, uint8_t subfr
}
void fill_ulsch_harq_indication (PHY_VARS_eNB *eNB, LTE_UL_eNB_HARQ_t *ulsch_harq, uint16_t rnti, int frame, int subframe, int bundling) {
int UE_id = find_dlsch(rnti,eNB,SEARCH_EXIST);
int DLSCH_id = find_dlsch(rnti,eNB,SEARCH_EXIST);
if( (UE_id<0) || (UE_id>=NUMBER_OF_UE_MAX) ) {
LOG_E(PHY,"illegal UE_id found!!! rnti %04x UE_id %d\n",rnti,UE_id);
if( (DLSCH_id<0) || (DLSCH_id>=NUMBER_OF_DLSCH_MAX) ) {
LOG_E(PHY,"illegal DLSCH_id found!!! rnti %04x DLSCH_id %d\n",rnti,DLSCH_id);
return;
}
//AssertFatal(UE_id>=0,"UE_id doesn't exist\n");
//AssertFatal(DLSCH_id>=0,"DLSCH_id doesn't exist\n");
pthread_mutex_lock(&eNB->UL_INFO_mutex);
nfapi_harq_indication_pdu_t *pdu = &eNB->UL_INFO.harq_ind.harq_indication_body.harq_pdu_list[eNB->UL_INFO.harq_ind.harq_indication_body.number_of_harqs];
int M;
......@@ -1896,7 +1895,7 @@ void fill_ulsch_harq_indication (PHY_VARS_eNB *eNB, LTE_UL_eNB_HARQ_t *ulsch_har
AssertFatal (ulsch_harq->o_ACK[i] == 0 || ulsch_harq->o_ACK[i] == 1, "harq_ack[%d] is %d, should be 1,2 or 4\n", i, ulsch_harq->o_ACK[i]);
pdu->harq_indication_fdd_rel13.harq_tb_n[i] = 2 - ulsch_harq->o_ACK[i];
// release DLSCH if needed
release_harq(eNB,UE_id,i,frame,subframe,0xffff, ulsch_harq->o_ACK[i] == 1);
release_harq(eNB,DLSCH_id,i,frame,subframe,0xffff, ulsch_harq->o_ACK[i] == 1);
}
} else { // TDD
M = ul_ACK_subframe2_M (&eNB->frame_parms, subframe);
......@@ -1912,14 +1911,14 @@ void fill_ulsch_harq_indication (PHY_VARS_eNB *eNB, LTE_UL_eNB_HARQ_t *ulsch_har
* We have to release the proper HARQ in case of ACK or NACK if max retransmission reached.
* Basically, call release_harq with 1 as last argument when ACK and 0 when NACK.
*/
release_harq(eNB,UE_id,i,frame,subframe,0xffff, ulsch_harq->o_ACK[i] == 1);
release_harq(eNB,DLSCH_id,i,frame,subframe,0xffff, ulsch_harq->o_ACK[i] == 1);
if (M==1 && ulsch_harq->O_ACK==1 && ulsch_harq->o_ACK[i] == 1) release_harq(eNB,UE_id,0,frame,subframe,0xffff, ulsch_harq->o_ACK[i] == 1);
else if (M==1 && ulsch_harq->O_ACK==2 && ulsch_harq->o_ACK[i] == 1) release_harq(eNB,UE_id,i,frame,subframe,0xffff, ulsch_harq->o_ACK[i] == 1);
if (M==1 && ulsch_harq->O_ACK==1 && ulsch_harq->o_ACK[i] == 1) release_harq(eNB,DLSCH_id,0,frame,subframe,0xffff, ulsch_harq->o_ACK[i] == 1);
else if (M==1 && ulsch_harq->O_ACK==2 && ulsch_harq->o_ACK[i] == 1) release_harq(eNB,DLSCH_id,i,frame,subframe,0xffff, ulsch_harq->o_ACK[i] == 1);
else if (M>1 && ulsch_harq->o_ACK[i] == 1) {
// spatial bundling
release_harq(eNB,UE_id,0,frame,subframe,1<<i, ulsch_harq->o_ACK[i] == 1);
release_harq(eNB,UE_id,1,frame,subframe,1<<i, ulsch_harq->o_ACK[i] == 1);
release_harq(eNB,DLSCH_id,0,frame,subframe,1<<i, ulsch_harq->o_ACK[i] == 1);
release_harq(eNB,DLSCH_id,1,frame,subframe,1<<i, ulsch_harq->o_ACK[i] == 1);
}
}
}
......@@ -1935,10 +1934,10 @@ void fill_uci_harq_indication (int UEid, PHY_VARS_eNB *eNB, LTE_eNB_UCI *uci, in
return;
}
int UE_id=find_dlsch(uci->rnti,eNB,SEARCH_EXIST);
int DLSCH_id=find_dlsch(uci->rnti,eNB,SEARCH_EXIST);
//AssertFatal(UE_id>=0,"UE_id doesn't exist rnti:%x\n", uci->rnti);
if (UE_id < 0) {
//AssertFatal(DLSCH_id>=0,"DLSCH_id doesn't exist rnti:%x\n", uci->rnti);
if (DLSCH_id < 0) {
LOG_E(PHY,"SFN/SF:%04d%d Unable to find rnti:%x do not send HARQ\n", frame, subframe, uci->rnti);
return;
}
......@@ -1978,7 +1977,7 @@ void fill_uci_harq_indication (int UEid, PHY_VARS_eNB *eNB, LTE_eNB_UCI *uci, in
AssertFatal (harq_ack[0] == 1 || harq_ack[0] == 2 || harq_ack[0] == 4, "harq_ack[0] is %d, should be 1,2 or 4\n", harq_ack[0]);
pdu->harq_indication_fdd_rel13.harq_tb_n[0] = harq_ack[0];
// release DLSCH if needed
release_harq(eNB,UE_id,0,frame,subframe,0xffff, harq_ack[0] == 1);
release_harq(eNB,DLSCH_id,0,frame,subframe,0xffff, harq_ack[0] == 1);
} else if (uci->pucch_fmt == pucch_format1b) {
pdu->harq_indication_fdd_rel13.tl.tag = NFAPI_HARQ_INDICATION_FDD_REL13_TAG;
pdu->harq_indication_fdd_rel13.mode = 0;
......@@ -1988,8 +1987,8 @@ void fill_uci_harq_indication (int UEid, PHY_VARS_eNB *eNB, LTE_eNB_UCI *uci, in
pdu->harq_indication_fdd_rel13.harq_tb_n[0] = harq_ack[0];
pdu->harq_indication_fdd_rel13.harq_tb_n[1] = harq_ack[1];
// release DLSCH if needed
release_harq(eNB,UE_id,0,frame,subframe,0xffff, harq_ack[0] == 1);
release_harq(eNB,UE_id,1,frame,subframe,0xffff, harq_ack[1] == 1);
release_harq(eNB,DLSCH_id,0,frame,subframe,0xffff, harq_ack[0] == 1);
release_harq(eNB,DLSCH_id,1,frame,subframe,0xffff, harq_ack[1] == 1);
} else AssertFatal(1==0,"only format 1a/b for now, received %d\n",uci->pucch_fmt);
} else { // TDD
AssertFatal (tdd_mapping_mode == 0 || tdd_mapping_mode == 1 || tdd_mapping_mode == 2, "Illegal tdd_mapping_mode %d\n", tdd_mapping_mode);
......@@ -2007,7 +2006,7 @@ void fill_uci_harq_indication (int UEid, PHY_VARS_eNB *eNB, LTE_eNB_UCI *uci, in
AssertFatal(harq_ack[0] == 1 || harq_ack[0] == 2 || harq_ack[0] == 4, "harq_ack[0] is %d, should be 1,2 or 4\n",harq_ack[0]);
pdu->harq_indication_tdd_rel13.harq_data[0].bundling.value_0 = harq_ack[0];
// release all bundled DLSCH if needed
release_harq(eNB,UE_id,0,frame,subframe,0xffff, harq_ack[0] == 1);
release_harq(eNB,DLSCH_id,0,frame,subframe,0xffff, harq_ack[0] == 1);
} else if (uci->pucch_fmt == pucch_format1b) {
pdu->harq_indication_tdd_rel13.number_of_ack_nack = 2;
AssertFatal(harq_ack[0] == 1 || harq_ack[0] == 2 || harq_ack[1] == 4, "harq_ack[0] is %d, should be 0,1 or 4\n",harq_ack[0]);
......@@ -2016,8 +2015,8 @@ void fill_uci_harq_indication (int UEid, PHY_VARS_eNB *eNB, LTE_eNB_UCI *uci, in
pdu->harq_indication_tdd_rel13.harq_data[0].bundling.value_0 = harq_ack[0];
pdu->harq_indication_tdd_rel13.harq_data[1].bundling.value_0 = harq_ack[1];
// release all DLSCH if needed
release_harq(eNB,UE_id,0,frame,subframe,0xffff, harq_ack[0] == 1);
release_harq(eNB,UE_id,1,frame,subframe,0xffff, harq_ack[1] == 1);
release_harq(eNB,DLSCH_id,0,frame,subframe,0xffff, harq_ack[0] == 1);
release_harq(eNB,DLSCH_id,1,frame,subframe,0xffff, harq_ack[1] == 1);
}
break;
......@@ -2031,7 +2030,7 @@ void fill_uci_harq_indication (int UEid, PHY_VARS_eNB *eNB, LTE_eNB_UCI *uci, in
AssertFatal(harq_ack[0] == 1 || harq_ack[0] == 2 || harq_ack[0] == 4, "harq_ack[0] is %d, should be 1,2 or 4\n",harq_ack[0]);
pdu->harq_indication_tdd_rel13.harq_data[0].multiplex.value_0 = harq_ack[0];
// release all DLSCH if needed
release_harq(eNB,UE_id,0,frame,subframe,0xffff, harq_ack[0] == 1);
release_harq(eNB,DLSCH_id,0,frame,subframe,0xffff, harq_ack[0] == 1);
} else if (uci->num_pucch_resources == 1 && uci->pucch_fmt == pucch_format1b) {
pdu->harq_indication_tdd_rel13.tl.tag = NFAPI_HARQ_INDICATION_TDD_REL13_TAG;
pdu->harq_indication_tdd_rel13.number_of_ack_nack = 2;
......@@ -2040,8 +2039,8 @@ void fill_uci_harq_indication (int UEid, PHY_VARS_eNB *eNB, LTE_eNB_UCI *uci, in
pdu->harq_indication_tdd_rel13.harq_data[0].multiplex.value_0 = harq_ack[0];
pdu->harq_indication_tdd_rel13.harq_data[1].multiplex.value_0 = harq_ack[1];
// release all DLSCH if needed
release_harq(eNB,UE_id,0,frame,subframe,0xffff, harq_ack[0] == 1);
release_harq(eNB,UE_id,1,frame,subframe,0xffff, harq_ack[1] == 1);
release_harq(eNB,DLSCH_id,0,frame,subframe,0xffff, harq_ack[0] == 1);
release_harq(eNB,DLSCH_id,1,frame,subframe,0xffff, harq_ack[1] == 1);
} else { // num_pucch_resources (M) > 1
pdu->harq_indication_tdd_rel13.tl.tag = NFAPI_HARQ_INDICATION_TDD_REL13_TAG;
pdu->harq_indication_tdd_rel13.number_of_ack_nack = uci->num_pucch_resources;
......@@ -2053,8 +2052,8 @@ void fill_uci_harq_indication (int UEid, PHY_VARS_eNB *eNB, LTE_eNB_UCI *uci, in
if (uci->num_pucch_resources == 4) pdu->harq_indication_tdd_rel13.harq_data[3].multiplex.value_0 = harq_ack[3];
// spatial-bundling in this case so release both HARQ if necessary
release_harq(eNB,UE_id,0,frame,subframe,tdd_multiplexing_mask, 1 /* force release? previous code was unconditional */);
release_harq(eNB,UE_id,1,frame,subframe,tdd_multiplexing_mask, 1 /* force release? previous code was unconditional */);
release_harq(eNB,DLSCH_id,0,frame,subframe,tdd_multiplexing_mask, 1 /* force release? previous code was unconditional */);
release_harq(eNB,DLSCH_id,1,frame,subframe,tdd_multiplexing_mask, 1 /* force release? previous code was unconditional */);
}
break;
......@@ -2078,8 +2077,8 @@ void fill_uci_harq_indication (int UEid, PHY_VARS_eNB *eNB, LTE_eNB_UCI *uci, in
if (uci->num_pucch_resources == 1 || uci->num_pucch_resources == 4 ||
tdd_config5_sf2scheds == 1 || tdd_config5_sf2scheds == 4 || tdd_config5_sf2scheds == 7) {
pdu->harq_indication_tdd_rel13.harq_data[0].bundling.value_0 = 1;
release_harq(eNB,UE_id,0,frame,subframe,0xffff, 1);
release_harq(eNB,UE_id,1,frame,subframe,0xffff, 1);
release_harq(eNB,DLSCH_id,0,frame,subframe,0xffff, 1);
release_harq(eNB,DLSCH_id,1,frame,subframe,0xffff, 1);
} else {
pdu->harq_indication_tdd_rel13.harq_data[0].bundling.value_0 = 0;
}
......@@ -2090,8 +2089,8 @@ void fill_uci_harq_indication (int UEid, PHY_VARS_eNB *eNB, LTE_eNB_UCI *uci, in
if (uci->num_pucch_resources == 2 || tdd_config5_sf2scheds == 2 ||
tdd_config5_sf2scheds == 5 || tdd_config5_sf2scheds == 8) {
pdu->harq_indication_tdd_rel13.harq_data[0].bundling.value_0 = 1;
release_harq(eNB,UE_id,0,frame,subframe,0xffff, 1);
release_harq(eNB,UE_id,1,frame,subframe,0xffff, 1);
release_harq(eNB,DLSCH_id,0,frame,subframe,0xffff, 1);
release_harq(eNB,DLSCH_id,1,frame,subframe,0xffff, 1);
} else {
pdu->harq_indication_tdd_rel13.harq_data[0].bundling.value_0 = 0;
}
......@@ -2102,8 +2101,8 @@ void fill_uci_harq_indication (int UEid, PHY_VARS_eNB *eNB, LTE_eNB_UCI *uci, in
if (uci->num_pucch_resources == 3 || tdd_config5_sf2scheds == 3 ||
tdd_config5_sf2scheds == 6 || tdd_config5_sf2scheds == 9) {
pdu->harq_indication_tdd_rel13.harq_data[0].bundling.value_0 = 1;
release_harq(eNB,UE_id,0,frame,subframe,0xffff, 1);
release_harq(eNB,UE_id,1,frame,subframe,0xffff, 1);
release_harq(eNB,DLSCH_id,0,frame,subframe,0xffff, 1);
release_harq(eNB,DLSCH_id,1,frame,subframe,0xffff, 1);
} else {
pdu->harq_indication_tdd_rel13.harq_data[0].bundling.value_0 = 0;
}
......@@ -2120,7 +2119,7 @@ void fill_uci_harq_indication (int UEid, PHY_VARS_eNB *eNB, LTE_eNB_UCI *uci, in
pthread_mutex_unlock(&eNB->UL_INFO_mutex);
}
void fill_crc_indication (PHY_VARS_eNB *eNB, int UE_id, int frame, int subframe, uint8_t crc_flag) {
void fill_crc_indication (PHY_VARS_eNB *eNB, int ULSCH_id, int frame, int subframe, uint8_t crc_flag) {
pthread_mutex_lock(&eNB->UL_INFO_mutex);
nfapi_crc_indication_pdu_t *pdu = &eNB->UL_INFO.crc_ind.crc_indication_body.crc_pdu_list[eNB->UL_INFO.crc_ind.crc_indication_body.number_of_crcs];
eNB->UL_INFO.crc_ind.sfn_sf = frame<<4 | subframe;
......@@ -2129,7 +2128,7 @@ void fill_crc_indication (PHY_VARS_eNB *eNB, int UE_id, int frame, int subframe,
pdu->instance_length = 0; // don't know what to do with this
// pdu->rx_ue_information.handle = handle;
pdu->rx_ue_information.tl.tag = NFAPI_RX_UE_INFORMATION_TAG;
pdu->rx_ue_information.rnti = eNB->ulsch[UE_id]->rnti;
pdu->rx_ue_information.rnti = eNB->ulsch[ULSCH_id]->rnti;
pdu->crc_indication_rel8.tl.tag = NFAPI_CRC_INDICATION_REL8_TAG;
pdu->crc_indication_rel8.crc_flag = crc_flag;
eNB->UL_INFO.crc_ind.crc_indication_body.number_of_crcs++;
......@@ -2184,8 +2183,8 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) {
// figure out a better way to choose slot_rx, 19 is ok for a particular TDD configuration with 30kHz SCS
if ((frame&127) == 0 && subframe==3) {
dump_ulsch_stats(eNB);
dump_uci_stats(eNB);
dump_ulsch_stats(eNB,frame);
dump_uci_stats(eNB,frame);
}
// clear unused statistics after 2 seconds
......@@ -2221,7 +2220,7 @@ void release_rnti_of_phy(module_id_t mod_id) {
eNB_PHY = RC.eNB[mod_id][CC_id];
rnti = release_rntis.ue_release_request_TLVs_list[i].rnti;
for (j=0; j<NUMBER_OF_UE_MAX; j++) {
for (j=0; j<NUMBER_OF_ULSCH_MAX; j++) {
ulsch = eNB_PHY->ulsch[j];
if((ulsch != NULL) && (ulsch->rnti == rnti)) {
......@@ -2246,7 +2245,7 @@ void release_rnti_of_phy(module_id_t mod_id) {
if (eNB_PHY->ulsch_stats[j].rnti == rnti) {eNB_PHY->ulsch_stats[j].rnti=0; break;}
}
for(j=0; j<NUMBER_OF_UCI_VARS_MAX; j++) {
for(j=0; j<NUMBER_OF_UCI_MAX; j++) {
if(eNB_PHY->uci_vars[j].rnti == rnti) {
LOG_I(PHY, "clean eNb uci_vars[%d] UE %x \n",j, rnti);
memset(&eNB_PHY->uci_vars[i],0,sizeof(LTE_eNB_UCI));
......
......@@ -86,18 +86,6 @@
#define MAX_gNB 2
#endif
#define NUMBER_OF_DLSCH_MAX 16
#define NUMBER_OF_ULSCH_MAX 16
#define NUMBER_OF_SCH_STATS_MAX 16
#define NUMBER_OF_NR_DLSCH_MAX 2//16
#define NUMBER_OF_NR_ULSCH_MAX 2//16
#define NUMBER_OF_NR_SCH_STATS_MAX 16
#define NUMBER_OF_NR_PUCCH_MAX 16
#define NUMBER_OF_NR_SR_MAX 16
#define NUMBER_OF_NR_PDCCH_MAX 16
#define MAX_MANAGED_ENB_PER_MOBILE 2
#define MAX_MANAGED_GNB_PER_MOBILE 2
......
This source diff could not be displayed because it is too large. You can view the blob instead.
-- **************************************************************
--
-- Common definitions
--
-- **************************************************************
F1AP-CommonDataTypes {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
ngran-access (22) modules (3) f1ap (3) version1 (1) f1ap-CommonDataTypes (3) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
Criticality ::= ENUMERATED { reject, ignore, notify }
Presence ::= ENUMERATED { optional, conditional, mandatory }
PrivateIE-ID ::= CHOICE {
local INTEGER (0..65535),
global OBJECT IDENTIFIER
}
ProcedureCode ::= INTEGER (0..255)
ProtocolExtensionID ::= INTEGER (0..65535)
ProtocolIE-ID ::= INTEGER (0..65535)
TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessful-outcome }
END
-- **************************************************************
--
-- Constant definitions
--
-- **************************************************************
F1AP-Constants {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
ngran-access (22) modules (3) f1ap (3) version1 (1) f1ap-Constants (4) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
ProcedureCode,
ProtocolIE-ID
FROM F1AP-CommonDataTypes;
-- **************************************************************
--
-- Elementary Procedures
--
-- **************************************************************
id-Reset ProcedureCode ::= 0
id-F1Setup ProcedureCode ::= 1
id-ErrorIndication ProcedureCode ::= 2
id-gNBDUConfigurationUpdate ProcedureCode ::= 3
id-gNBCUConfigurationUpdate ProcedureCode ::= 4
id-UEContextSetup ProcedureCode ::= 5
id-UEContextRelease ProcedureCode ::= 6
id-UEContextModification ProcedureCode ::= 7
id-UEContextModificationRequired ProcedureCode ::= 8
id-UEMobilityCommand ProcedureCode ::= 9
id-UEContextReleaseRequest ProcedureCode ::= 10
id-InitialULRRCMessageTransfer ProcedureCode ::= 11
id-DLRRCMessageTransfer ProcedureCode ::= 12
id-ULRRCMessageTransfer ProcedureCode ::= 13
id-privateMessage ProcedureCode ::= 14
id-UEInactivityNotification ProcedureCode ::= 15
id-GNBDUResourceCoordination ProcedureCode ::= 16
id-SystemInformationDeliveryCommand ProcedureCode ::= 17
id-Paging ProcedureCode ::= 18
id-Notify ProcedureCode ::= 19
id-WriteReplaceWarning ProcedureCode ::= 20
id-PWSCancel ProcedureCode ::= 21
id-PWSRestartIndication ProcedureCode ::= 22
id-PWSFailureIndication ProcedureCode ::= 23
id-GNBDUStatusIndication ProcedureCode ::= 24
id-RRCDeliveryReport ProcedureCode ::= 25
id-F1Removal ProcedureCode ::= 26
id-NetworkAccessRateReduction ProcedureCode ::= 27
id-TraceStart ProcedureCode ::= 28
id-DeactivateTrace ProcedureCode ::= 29
id-DUCURadioInformationTransfer ProcedureCode ::= 30
id-CUDURadioInformationTransfer ProcedureCode ::= 31
id-BAPMappingConfiguration ProcedureCode ::= 32
id-GNBDUResourceConfiguration ProcedureCode ::= 33
id-IABTNLAddressAllocation ProcedureCode ::= 34
id-IABUPConfigurationUpdate ProcedureCode ::= 35
id-resourceStatusReportingInitiation ProcedureCode ::= 36
id-resourceStatusReporting ProcedureCode ::= 37
id-accessAndMobilityIndication ProcedureCode ::= 38
id-accessSuccess ProcedureCode ::= 39
id-cellTrafficTrace ProcedureCode ::= 40
id-PositioningMeasurementExchange ProcedureCode ::= 41
id-PositioningAssistanceInformationControl ProcedureCode ::= 42
id-PositioningAssistanceInformationFeedback ProcedureCode ::= 43
id-PositioningMeasurementReport ProcedureCode ::= 44
id-PositioningMeasurementAbort ProcedureCode ::= 45
id-PositioningMeasurementFailureIndication ProcedureCode ::= 46
id-PositioningMeasurementUpdate ProcedureCode ::= 47
id-TRPInformationExchange ProcedureCode ::= 48
id-PositioningInformationExchange ProcedureCode ::= 49
id-PositioningActivation ProcedureCode ::= 50
id-PositioningDeactivation ProcedureCode ::= 51
id-E-CIDMeasurementInitiation ProcedureCode ::= 52
id-E-CIDMeasurementFailureIndication ProcedureCode ::= 53
id-E-CIDMeasurementReport ProcedureCode ::= 54
id-E-CIDMeasurementTermination ProcedureCode ::= 55
id-PositioningInformationUpdate ProcedureCode ::= 56
id-ReferenceTimeInformationReport ProcedureCode ::= 57
id-ReferenceTimeInformationReportingControl ProcedureCode ::= 58
-- **************************************************************
--
-- Extension constants
--
-- **************************************************************
maxPrivateIEs INTEGER ::= 65535
maxProtocolExtensions INTEGER ::= 65535
maxProtocolIEs INTEGER ::= 65535
-- **************************************************************
--
-- Lists
--
-- **************************************************************
maxNRARFCN INTEGER ::= 3279165
maxnoofErrors INTEGER ::= 256
maxnoofIndividualF1ConnectionsToReset INTEGER ::= 65536
maxCellingNBDU INTEGER ::= 512
maxnoofSCells INTEGER ::= 32
maxnoofSRBs INTEGER ::= 8
maxnoofDRBs INTEGER ::= 64
maxnoofULUPTNLInformation INTEGER ::= 2
maxnoofDLUPTNLInformation INTEGER ::= 2
maxnoofBPLMNs INTEGER ::= 6
maxnoofCandidateSpCells INTEGER ::= 64
maxnoofPotentialSpCells INTEGER ::= 64
maxnoofNrCellBands INTEGER ::= 32
maxnoofSIBTypes INTEGER ::= 32
maxnoofSITypes INTEGER ::= 32
maxnoofPagingCells INTEGER ::= 512
maxnoofTNLAssociations INTEGER ::= 32
maxnoofQoSFlows INTEGER ::= 64
maxnoofSliceItems INTEGER ::= 1024
maxCellineNB INTEGER ::= 256
maxnoofExtendedBPLMNs INTEGER ::= 6
maxnoofUEIDs INTEGER ::= 65536
maxnoofBPLMNsNR INTEGER ::= 12
maxnoofUACPLMNs INTEGER ::= 12
maxnoofUACperPLMN INTEGER ::= 64
maxnoofAdditionalSIBs INTEGER ::= 63
maxnoofslots INTEGER ::= 5120
maxnoofTLAs INTEGER ::= 16
maxnoofGTPTLAs INTEGER ::= 16
maxnoofBHRLCChannels INTEGER ::= 65536
maxnoofRoutingEntries INTEGER ::= 1024
maxnoofIABSTCInfo INTEGER ::= 45
maxnoofSymbols INTEGER ::= 14
maxnoofServingCells INTEGER ::= 32
maxnoofDUFSlots INTEGER ::= 320
maxnoofHSNASlots INTEGER ::= 5120
maxnoofServedCellsIAB INTEGER ::= 512
maxnoofChildIABNodes INTEGER ::= 1024
maxnoofNonUPTrafficMappings INTEGER ::= 32
maxnoofTLAsIAB INTEGER ::= 1024
maxnoofMappingEntries INTEGER ::= 67108864
maxnoofDSInfo INTEGER ::= 64
maxnoofEgressLinks INTEGER ::= 2
maxnoofULUPTNLInformationforIAB INTEGER ::= 32678
maxnoofUPTNLAddresses INTEGER ::= 8
maxnoofSLDRBs INTEGER ::= 512
maxnoofQoSParaSets INTEGER ::= 8
maxnoofPC5QoSFlows INTEGER ::= 2048
maxnoofSSBAreas INTEGER ::= 64
maxnoofPhysicalResourceBlocks INTEGER ::= 275
maxnoofPhysicalResourceBlocks-1 INTEGER ::= 274
maxnoofPRACHconfigs INTEGER ::= 16
maxnoofRACHReports INTEGER ::= 64
maxnoofRLFReports INTEGER ::= 64
maxnoofAdditionalPDCPDuplicationTNL INTEGER ::= 2
maxnoofRLCDuplicationState INTEGER ::= 3
maxnoofCHOcells INTEGER ::= 8
maxnoofMDTPLMNs INTEGER ::= 16
maxnoofCAGsupported INTEGER ::= 12
maxnoofNIDsupported INTEGER ::= 12
maxnoofNRSCSs INTEGER ::= 5
maxnoofExtSliceItems INTEGER ::= 65535
maxnoofPosMeas INTEGER ::= 16384
maxnoofTRPInfoTypes INTEGER ::= 64
maxnoofTRPs INTEGER ::= 65535
maxnoofSRSTriggerStates INTEGER ::= 3
maxnoofSpatialRelations INTEGER ::= 64
maxnoBcastCell INTEGER ::= 16384
maxnoofAngleInfo INTEGER ::= 65535
maxnooflcs-gcs-translation INTEGER ::= 3
maxnoofPath INTEGER ::= 2
maxnoofMeasE-CID INTEGER ::= 64
maxnoofSSBs INTEGER ::= 255
maxnoSRS-ResourceSets INTEGER ::= 16
maxnoSRS-ResourcePerSet INTEGER ::= 16
maxnoSRS-Carriers INTEGER ::= 32
maxnoSCSs INTEGER ::= 5
maxnoSRS-Resources INTEGER ::= 64
maxnoSRS-PosResources INTEGER ::= 64
maxnoSRS-PosResourceSets INTEGER ::= 16
maxnoSRS-PosResourcePerSet INTEGER ::= 16
maxnoofPRS-ResourceSets INTEGER ::= 2
maxnoofPRS-ResourcesPerSet INTEGER ::= 64
maxNoOfMeasTRPs INTEGER ::= 64
maxnoofPRSresourceSets INTEGER ::= 8
maxnoofPRSresources INTEGER ::= 64
-- **************************************************************
--
-- IEs
--
-- **************************************************************
id-Cause ProtocolIE-ID ::= 0
id-Cells-Failed-to-be-Activated-List ProtocolIE-ID ::= 1
id-Cells-Failed-to-be-Activated-List-Item ProtocolIE-ID ::= 2
id-Cells-to-be-Activated-List ProtocolIE-ID ::= 3
id-Cells-to-be-Activated-List-Item ProtocolIE-ID ::= 4
id-Cells-to-be-Deactivated-List ProtocolIE-ID ::= 5
id-Cells-to-be-Deactivated-List-Item ProtocolIE-ID ::= 6
id-CriticalityDiagnostics ProtocolIE-ID ::= 7
id-CUtoDURRCInformation ProtocolIE-ID ::= 9
id-DRBs-FailedToBeModified-Item ProtocolIE-ID ::= 12
id-DRBs-FailedToBeModified-List ProtocolIE-ID ::= 13
id-DRBs-FailedToBeSetup-Item ProtocolIE-ID ::= 14
id-DRBs-FailedToBeSetup-List ProtocolIE-ID ::= 15
id-DRBs-FailedToBeSetupMod-Item ProtocolIE-ID ::= 16
id-DRBs-FailedToBeSetupMod-List ProtocolIE-ID ::= 17
id-DRBs-ModifiedConf-Item ProtocolIE-ID ::= 18
id-DRBs-ModifiedConf-List ProtocolIE-ID ::= 19
id-DRBs-Modified-Item ProtocolIE-ID ::= 20
id-DRBs-Modified-List ProtocolIE-ID ::= 21
id-DRBs-Required-ToBeModified-Item ProtocolIE-ID ::= 22
id-DRBs-Required-ToBeModified-List ProtocolIE-ID ::= 23
id-DRBs-Required-ToBeReleased-Item ProtocolIE-ID ::= 24
id-DRBs-Required-ToBeReleased-List ProtocolIE-ID ::= 25
id-DRBs-Setup-Item ProtocolIE-ID ::= 26
id-DRBs-Setup-List ProtocolIE-ID ::= 27
id-DRBs-SetupMod-Item ProtocolIE-ID ::= 28
id-DRBs-SetupMod-List ProtocolIE-ID ::= 29
id-DRBs-ToBeModified-Item ProtocolIE-ID ::= 30
id-DRBs-ToBeModified-List ProtocolIE-ID ::= 31
id-DRBs-ToBeReleased-Item ProtocolIE-ID ::= 32
id-DRBs-ToBeReleased-List ProtocolIE-ID ::= 33
id-DRBs-ToBeSetup-Item ProtocolIE-ID ::= 34
id-DRBs-ToBeSetup-List ProtocolIE-ID ::= 35
id-DRBs-ToBeSetupMod-Item ProtocolIE-ID ::= 36
id-DRBs-ToBeSetupMod-List ProtocolIE-ID ::= 37
id-DRXCycle ProtocolIE-ID ::= 38
id-DUtoCURRCInformation ProtocolIE-ID ::= 39
id-gNB-CU-UE-F1AP-ID ProtocolIE-ID ::= 40
id-gNB-DU-UE-F1AP-ID ProtocolIE-ID ::= 41
id-gNB-DU-ID ProtocolIE-ID ::= 42
id-GNB-DU-Served-Cells-Item ProtocolIE-ID ::= 43
id-gNB-DU-Served-Cells-List ProtocolIE-ID ::= 44
id-gNB-DU-Name ProtocolIE-ID ::= 45
id-NRCellID ProtocolIE-ID ::= 46
id-oldgNB-DU-UE-F1AP-ID ProtocolIE-ID ::= 47
id-ResetType ProtocolIE-ID ::= 48
id-ResourceCoordinationTransferContainer ProtocolIE-ID ::= 49
id-RRCContainer ProtocolIE-ID ::= 50
id-SCell-ToBeRemoved-Item ProtocolIE-ID ::= 51
id-SCell-ToBeRemoved-List ProtocolIE-ID ::= 52
id-SCell-ToBeSetup-Item ProtocolIE-ID ::= 53
id-SCell-ToBeSetup-List ProtocolIE-ID ::= 54
id-SCell-ToBeSetupMod-Item ProtocolIE-ID ::= 55
id-SCell-ToBeSetupMod-List ProtocolIE-ID ::= 56
id-Served-Cells-To-Add-Item ProtocolIE-ID ::= 57
id-Served-Cells-To-Add-List ProtocolIE-ID ::= 58
id-Served-Cells-To-Delete-Item ProtocolIE-ID ::= 59
id-Served-Cells-To-Delete-List ProtocolIE-ID ::= 60
id-Served-Cells-To-Modify-Item ProtocolIE-ID ::= 61
id-Served-Cells-To-Modify-List ProtocolIE-ID ::= 62
id-SpCell-ID ProtocolIE-ID ::= 63
id-SRBID ProtocolIE-ID ::= 64
id-SRBs-FailedToBeSetup-Item ProtocolIE-ID ::= 65
id-SRBs-FailedToBeSetup-List ProtocolIE-ID ::= 66
id-SRBs-FailedToBeSetupMod-Item ProtocolIE-ID ::= 67
id-SRBs-FailedToBeSetupMod-List ProtocolIE-ID ::= 68
id-SRBs-Required-ToBeReleased-Item ProtocolIE-ID ::= 69
id-SRBs-Required-ToBeReleased-List ProtocolIE-ID ::= 70
id-SRBs-ToBeReleased-Item ProtocolIE-ID ::= 71
id-SRBs-ToBeReleased-List ProtocolIE-ID ::= 72
id-SRBs-ToBeSetup-Item ProtocolIE-ID ::= 73
id-SRBs-ToBeSetup-List ProtocolIE-ID ::= 74
id-SRBs-ToBeSetupMod-Item ProtocolIE-ID ::= 75
id-SRBs-ToBeSetupMod-List ProtocolIE-ID ::= 76
id-TimeToWait ProtocolIE-ID ::= 77
id-TransactionID ProtocolIE-ID ::= 78
id-TransmissionActionIndicator ProtocolIE-ID ::= 79
id-UE-associatedLogicalF1-ConnectionItem ProtocolIE-ID ::= 80
id-UE-associatedLogicalF1-ConnectionListResAck ProtocolIE-ID ::= 81
id-gNB-CU-Name ProtocolIE-ID ::= 82
id-SCell-FailedtoSetup-List ProtocolIE-ID ::= 83
id-SCell-FailedtoSetup-Item ProtocolIE-ID ::= 84
id-SCell-FailedtoSetupMod-List ProtocolIE-ID ::= 85
id-SCell-FailedtoSetupMod-Item ProtocolIE-ID ::= 86
id-RRCReconfigurationCompleteIndicator ProtocolIE-ID ::= 87
id-Cells-Status-Item ProtocolIE-ID ::= 88
id-Cells-Status-List ProtocolIE-ID ::= 89
id-Candidate-SpCell-List ProtocolIE-ID ::= 90
id-Candidate-SpCell-Item ProtocolIE-ID ::= 91
id-Potential-SpCell-List ProtocolIE-ID ::= 92
id-Potential-SpCell-Item ProtocolIE-ID ::= 93
id-FullConfiguration ProtocolIE-ID ::= 94
id-C-RNTI ProtocolIE-ID ::= 95
id-SpCellULConfigured ProtocolIE-ID ::= 96
id-InactivityMonitoringRequest ProtocolIE-ID ::= 97
id-InactivityMonitoringResponse ProtocolIE-ID ::= 98
id-DRB-Activity-Item ProtocolIE-ID ::= 99
id-DRB-Activity-List ProtocolIE-ID ::= 100
id-EUTRA-NR-CellResourceCoordinationReq-Container ProtocolIE-ID ::= 101
id-EUTRA-NR-CellResourceCoordinationReqAck-Container ProtocolIE-ID ::= 102
id-Protected-EUTRA-Resources-List ProtocolIE-ID ::= 105
id-RequestType ProtocolIE-ID ::= 106
id-ServCellIndex ProtocolIE-ID ::= 107
id-RAT-FrequencyPriorityInformation ProtocolIE-ID ::= 108
id-ExecuteDuplication ProtocolIE-ID ::= 109
id-NRCGI ProtocolIE-ID ::= 111
id-PagingCell-Item ProtocolIE-ID ::= 112
id-PagingCell-List ProtocolIE-ID ::= 113
id-PagingDRX ProtocolIE-ID ::= 114
id-PagingPriority ProtocolIE-ID ::= 115
id-SItype-List ProtocolIE-ID ::= 116
id-UEIdentityIndexValue ProtocolIE-ID ::= 117
id-gNB-CUSystemInformation ProtocolIE-ID ::= 118
id-HandoverPreparationInformation ProtocolIE-ID ::= 119
id-GNB-CU-TNL-Association-To-Add-Item ProtocolIE-ID ::= 120
id-GNB-CU-TNL-Association-To-Add-List ProtocolIE-ID ::= 121
id-GNB-CU-TNL-Association-To-Remove-Item ProtocolIE-ID ::= 122
id-GNB-CU-TNL-Association-To-Remove-List ProtocolIE-ID ::= 123
id-GNB-CU-TNL-Association-To-Update-Item ProtocolIE-ID ::= 124
id-GNB-CU-TNL-Association-To-Update-List ProtocolIE-ID ::= 125
id-MaskedIMEISV ProtocolIE-ID ::= 126
id-PagingIdentity ProtocolIE-ID ::= 127
id-DUtoCURRCContainer ProtocolIE-ID ::= 128
id-Cells-to-be-Barred-List ProtocolIE-ID ::= 129
id-Cells-to-be-Barred-Item ProtocolIE-ID ::= 130
id-TAISliceSupportList ProtocolIE-ID ::= 131
id-GNB-CU-TNL-Association-Setup-List ProtocolIE-ID ::= 132
id-GNB-CU-TNL-Association-Setup-Item ProtocolIE-ID ::= 133
id-GNB-CU-TNL-Association-Failed-To-Setup-List ProtocolIE-ID ::= 134
id-GNB-CU-TNL-Association-Failed-To-Setup-Item ProtocolIE-ID ::= 135
id-DRB-Notify-Item ProtocolIE-ID ::= 136
id-DRB-Notify-List ProtocolIE-ID ::= 137
id-NotficationControl ProtocolIE-ID ::= 138
id-RANAC ProtocolIE-ID ::= 139
id-PWSSystemInformation ProtocolIE-ID ::= 140
id-RepetitionPeriod ProtocolIE-ID ::= 141
id-NumberofBroadcastRequest ProtocolIE-ID ::= 142
id-Cells-To-Be-Broadcast-List ProtocolIE-ID ::= 144
id-Cells-To-Be-Broadcast-Item ProtocolIE-ID ::= 145
id-Cells-Broadcast-Completed-List ProtocolIE-ID ::= 146
id-Cells-Broadcast-Completed-Item ProtocolIE-ID ::= 147
id-Broadcast-To-Be-Cancelled-List ProtocolIE-ID ::= 148
id-Broadcast-To-Be-Cancelled-Item ProtocolIE-ID ::= 149
id-Cells-Broadcast-Cancelled-List ProtocolIE-ID ::= 150
id-Cells-Broadcast-Cancelled-Item ProtocolIE-ID ::= 151
id-NR-CGI-List-For-Restart-List ProtocolIE-ID ::= 152
id-NR-CGI-List-For-Restart-Item ProtocolIE-ID ::= 153
id-PWS-Failed-NR-CGI-List ProtocolIE-ID ::= 154
id-PWS-Failed-NR-CGI-Item ProtocolIE-ID ::= 155
id-ConfirmedUEID ProtocolIE-ID ::= 156
id-Cancel-all-Warning-Messages-Indicator ProtocolIE-ID ::= 157
id-GNB-DU-UE-AMBR-UL ProtocolIE-ID ::= 158
id-DRXConfigurationIndicator ProtocolIE-ID ::= 159
id-RLC-Status ProtocolIE-ID ::= 160
id-DLPDCPSNLength ProtocolIE-ID ::= 161
id-GNB-DUConfigurationQuery ProtocolIE-ID ::= 162
id-MeasurementTimingConfiguration ProtocolIE-ID ::= 163
id-DRB-Information ProtocolIE-ID ::= 164
id-ServingPLMN ProtocolIE-ID ::= 165
id-Protected-EUTRA-Resources-Item ProtocolIE-ID ::= 168
id-GNB-CU-RRC-Version ProtocolIE-ID ::= 170
id-GNB-DU-RRC-Version ProtocolIE-ID ::= 171
id-GNBDUOverloadInformation ProtocolIE-ID ::= 172
id-CellGroupConfig ProtocolIE-ID ::= 173
id-RLCFailureIndication ProtocolIE-ID ::= 174
id-UplinkTxDirectCurrentListInformation ProtocolIE-ID ::= 175
id-DC-Based-Duplication-Configured ProtocolIE-ID ::= 176
id-DC-Based-Duplication-Activation ProtocolIE-ID ::= 177
id-SULAccessIndication ProtocolIE-ID ::= 178
id-AvailablePLMNList ProtocolIE-ID ::= 179
id-PDUSessionID ProtocolIE-ID ::= 180
id-ULPDUSessionAggregateMaximumBitRate ProtocolIE-ID ::= 181
id-ServingCellMO ProtocolIE-ID ::= 182
id-QoSFlowMappingIndication ProtocolIE-ID ::= 183
id-RRCDeliveryStatusRequest ProtocolIE-ID ::= 184
id-RRCDeliveryStatus ProtocolIE-ID ::= 185
id-BearerTypeChange ProtocolIE-ID ::= 186
id-RLCMode ProtocolIE-ID ::= 187
id-Duplication-Activation ProtocolIE-ID ::= 188
id-Dedicated-SIDelivery-NeededUE-List ProtocolIE-ID ::= 189
id-Dedicated-SIDelivery-NeededUE-Item ProtocolIE-ID ::= 190
id-DRX-LongCycleStartOffset ProtocolIE-ID ::= 191
id-ULPDCPSNLength ProtocolIE-ID ::= 192
id-SelectedBandCombinationIndex ProtocolIE-ID ::= 193
id-SelectedFeatureSetEntryIndex ProtocolIE-ID ::= 194
id-ResourceCoordinationTransferInformation ProtocolIE-ID ::= 195
id-ExtendedServedPLMNs-List ProtocolIE-ID ::= 196
id-ExtendedAvailablePLMN-List ProtocolIE-ID ::= 197
id-Associated-SCell-List ProtocolIE-ID ::= 198
id-latest-RRC-Version-Enhanced ProtocolIE-ID ::= 199
id-Associated-SCell-Item ProtocolIE-ID ::= 200
id-Cell-Direction ProtocolIE-ID ::= 201
id-SRBs-Setup-List ProtocolIE-ID ::= 202
id-SRBs-Setup-Item ProtocolIE-ID ::= 203
id-SRBs-SetupMod-List ProtocolIE-ID ::= 204
id-SRBs-SetupMod-Item ProtocolIE-ID ::= 205
id-SRBs-Modified-List ProtocolIE-ID ::= 206
id-SRBs-Modified-Item ProtocolIE-ID ::= 207
id-Ph-InfoSCG ProtocolIE-ID ::= 208
id-RequestedBandCombinationIndex ProtocolIE-ID ::= 209
id-RequestedFeatureSetEntryIndex ProtocolIE-ID ::= 210
id-RequestedP-MaxFR2 ProtocolIE-ID ::= 211
id-DRX-Config ProtocolIE-ID ::= 212
id-IgnoreResourceCoordinationContainer ProtocolIE-ID ::= 213
id-UEAssistanceInformation ProtocolIE-ID ::= 214
id-NeedforGap ProtocolIE-ID ::= 215
id-PagingOrigin ProtocolIE-ID ::= 216
id-new-gNB-CU-UE-F1AP-ID ProtocolIE-ID ::= 217
id-RedirectedRRCmessage ProtocolIE-ID ::= 218
id-new-gNB-DU-UE-F1AP-ID ProtocolIE-ID ::= 219
id-NotificationInformation ProtocolIE-ID ::= 220
id-PLMNAssistanceInfoForNetShar ProtocolIE-ID ::= 221
id-UEContextNotRetrievable ProtocolIE-ID ::= 222
id-BPLMN-ID-Info-List ProtocolIE-ID ::= 223
id-SelectedPLMNID ProtocolIE-ID ::= 224
id-UAC-Assistance-Info ProtocolIE-ID ::= 225
id-RANUEID ProtocolIE-ID ::= 226
id-GNB-DU-TNL-Association-To-Remove-Item ProtocolIE-ID ::= 227
id-GNB-DU-TNL-Association-To-Remove-List ProtocolIE-ID ::= 228
id-TNLAssociationTransportLayerAddressgNBDU ProtocolIE-ID ::= 229
id-portNumber ProtocolIE-ID ::= 230
id-AdditionalSIBMessageList ProtocolIE-ID ::= 231
id-Cell-Type ProtocolIE-ID ::= 232
id-IgnorePRACHConfiguration ProtocolIE-ID ::= 233
id-CG-Config ProtocolIE-ID ::= 234
id-PDCCH-BlindDetectionSCG ProtocolIE-ID ::= 235
id-Requested-PDCCH-BlindDetectionSCG ProtocolIE-ID ::= 236
id-Ph-InfoMCG ProtocolIE-ID ::= 237
id-MeasGapSharingConfig ProtocolIE-ID ::= 238
id-systemInformationAreaID ProtocolIE-ID ::= 239
id-areaScope ProtocolIE-ID ::= 240
id-RRCContainer-RRCSetupComplete ProtocolIE-ID ::= 241
id-TraceActivation ProtocolIE-ID ::= 242
id-TraceID ProtocolIE-ID ::= 243
id-Neighbour-Cell-Information-List ProtocolIE-ID ::= 244
id-SymbolAllocInSlot ProtocolIE-ID ::= 246
id-NumDLULSymbols ProtocolIE-ID ::= 247
id-AdditionalRRMPriorityIndex ProtocolIE-ID ::= 248
id-DUCURadioInformationType ProtocolIE-ID ::= 249
id-CUDURadioInformationType ProtocolIE-ID ::= 250
id-AggressorgNBSetID ProtocolIE-ID ::= 251
id-VictimgNBSetID ProtocolIE-ID ::= 252
id-LowerLayerPresenceStatusChange ProtocolIE-ID ::= 253
id-Transport-Layer-Address-Info ProtocolIE-ID ::= 254
id-Neighbour-Cell-Information-Item ProtocolIE-ID ::= 255
id-IntendedTDD-DL-ULConfig ProtocolIE-ID ::= 256
id-QosMonitoringRequest ProtocolIE-ID ::= 257
id-BHChannels-ToBeSetup-List ProtocolIE-ID ::= 258
id-BHChannels-ToBeSetup-Item ProtocolIE-ID ::= 259
id-BHChannels-Setup-List ProtocolIE-ID ::= 260
id-BHChannels-Setup-Item ProtocolIE-ID ::= 261
id-BHChannels-ToBeModified-Item ProtocolIE-ID ::= 262
id-BHChannels-ToBeModified-List ProtocolIE-ID ::= 263
id-BHChannels-ToBeReleased-Item ProtocolIE-ID ::= 264
id-BHChannels-ToBeReleased-List ProtocolIE-ID ::= 265
id-BHChannels-ToBeSetupMod-Item ProtocolIE-ID ::= 266
id-BHChannels-ToBeSetupMod-List ProtocolIE-ID ::= 267
id-BHChannels-FailedToBeModified-Item ProtocolIE-ID ::= 268
id-BHChannels-FailedToBeModified-List ProtocolIE-ID ::= 269
id-BHChannels-FailedToBeSetupMod-Item ProtocolIE-ID ::= 270
id-BHChannels-FailedToBeSetupMod-List ProtocolIE-ID ::= 271
id-BHChannels-Modified-Item ProtocolIE-ID ::= 272
id-BHChannels-Modified-List ProtocolIE-ID ::= 273
id-BHChannels-SetupMod-Item ProtocolIE-ID ::= 274
id-BHChannels-SetupMod-List ProtocolIE-ID ::= 275
id-BHChannels-Required-ToBeReleased-Item ProtocolIE-ID ::= 276
id-BHChannels-Required-ToBeReleased-List ProtocolIE-ID ::= 277
id-BHChannels-FailedToBeSetup-Item ProtocolIE-ID ::= 278
id-BHChannels-FailedToBeSetup-List ProtocolIE-ID ::= 279
id-BHInfo ProtocolIE-ID ::= 280
id-BAPAddress ProtocolIE-ID ::= 281
id-ConfiguredBAPAddress ProtocolIE-ID ::= 282
id-BH-Routing-Information-Added-List ProtocolIE-ID ::= 283
id-BH-Routing-Information-Added-List-Item ProtocolIE-ID ::= 284
id-BH-Routing-Information-Removed-List ProtocolIE-ID ::= 285
id-BH-Routing-Information-Removed-List-Item ProtocolIE-ID ::= 286
id-UL-BH-Non-UP-Traffic-Mapping ProtocolIE-ID ::= 287
id-Activated-Cells-to-be-Updated-List ProtocolIE-ID ::= 288
id-Child-Nodes-List ProtocolIE-ID ::= 289
id-IAB-Info-IAB-DU ProtocolIE-ID ::= 290
id-IAB-Info-IAB-donor-CU ProtocolIE-ID ::= 291
id-IAB-TNL-Addresses-To-Remove-List ProtocolIE-ID ::= 292
id-IAB-TNL-Addresses-To-Remove-Item ProtocolIE-ID ::= 293
id-IAB-Allocated-TNL-Address-List ProtocolIE-ID ::= 294
id-IAB-Allocated-TNL-Address-Item ProtocolIE-ID ::= 295
id-IABIPv6RequestType ProtocolIE-ID ::= 296
id-IABv4AddressesRequested ProtocolIE-ID ::= 297
id-IAB-Barred ProtocolIE-ID ::= 298
id-TrafficMappingInformation ProtocolIE-ID ::= 299
id-UL-UP-TNL-Information-to-Update-List ProtocolIE-ID ::= 300
id-UL-UP-TNL-Information-to-Update-List-Item ProtocolIE-ID ::= 301
id-UL-UP-TNL-Address-to-Update-List ProtocolIE-ID ::= 302
id-UL-UP-TNL-Address-to-Update-List-Item ProtocolIE-ID ::= 303
id-DL-UP-TNL-Address-to-Update-List ProtocolIE-ID ::= 304
id-DL-UP-TNL-Address-to-Update-List-Item ProtocolIE-ID ::= 305
id-NRV2XServicesAuthorized ProtocolIE-ID ::= 306
id-LTEV2XServicesAuthorized ProtocolIE-ID ::= 307
id-NRUESidelinkAggregateMaximumBitrate ProtocolIE-ID ::= 308
id-LTEUESidelinkAggregateMaximumBitrate ProtocolIE-ID ::= 309
id-SIB12-message ProtocolIE-ID ::= 310
id-SIB13-message ProtocolIE-ID ::= 311
id-SIB14-message ProtocolIE-ID ::= 312
id-SLDRBs-FailedToBeModified-Item ProtocolIE-ID ::= 313
id-SLDRBs-FailedToBeModified-List ProtocolIE-ID ::= 314
id-SLDRBs-FailedToBeSetup-Item ProtocolIE-ID ::= 315
id-SLDRBs-FailedToBeSetup-List ProtocolIE-ID ::= 316
id-SLDRBs-Modified-Item ProtocolIE-ID ::= 317
id-SLDRBs-Modified-List ProtocolIE-ID ::= 318
id-SLDRBs-Required-ToBeModified-Item ProtocolIE-ID ::= 319
id-SLDRBs-Required-ToBeModified-List ProtocolIE-ID ::= 320
id-SLDRBs-Required-ToBeReleased-Item ProtocolIE-ID ::= 321
id-SLDRBs-Required-ToBeReleased-List ProtocolIE-ID ::= 322
id-SLDRBs-Setup-Item ProtocolIE-ID ::= 323
id-SLDRBs-Setup-List ProtocolIE-ID ::= 324
id-SLDRBs-ToBeModified-Item ProtocolIE-ID ::= 325
id-SLDRBs-ToBeModified-List ProtocolIE-ID ::= 326
id-SLDRBs-ToBeReleased-Item ProtocolIE-ID ::= 327
id-SLDRBs-ToBeReleased-List ProtocolIE-ID ::= 328
id-SLDRBs-ToBeSetup-Item ProtocolIE-ID ::= 329
id-SLDRBs-ToBeSetup-List ProtocolIE-ID ::= 330
id-SLDRBs-ToBeSetupMod-Item ProtocolIE-ID ::= 331
id-SLDRBs-ToBeSetupMod-List ProtocolIE-ID ::= 332
id-SLDRBs-SetupMod-List ProtocolIE-ID ::= 333
id-SLDRBs-FailedToBeSetupMod-List ProtocolIE-ID ::= 334
id-SLDRBs-SetupMod-Item ProtocolIE-ID ::= 335
id-SLDRBs-FailedToBeSetupMod-Item ProtocolIE-ID ::= 336
id-SLDRBs-ModifiedConf-List ProtocolIE-ID ::= 337
id-SLDRBs-ModifiedConf-Item ProtocolIE-ID ::= 338
id-UEAssistanceInformationEUTRA ProtocolIE-ID ::= 339
id-PC5LinkAMBR ProtocolIE-ID ::= 340
id-SL-PHY-MAC-RLC-Config ProtocolIE-ID ::= 341
id-SL-ConfigDedicatedEUTRA ProtocolIE-ID ::= 342
id-AlternativeQoSParaSetList ProtocolIE-ID ::= 343
id-CurrentQoSParaSetIndex ProtocolIE-ID ::= 344
id-gNBCUMeasurementID ProtocolIE-ID ::= 345
id-gNBDUMeasurementID ProtocolIE-ID ::= 346
id-RegistrationRequest ProtocolIE-ID ::= 347
id-ReportCharacteristics ProtocolIE-ID ::= 348
id-CellToReportList ProtocolIE-ID ::= 349
id-CellMeasurementResultList ProtocolIE-ID ::= 350
id-HardwareLoadIndicator ProtocolIE-ID ::= 351
id-ReportingPeriodicity ProtocolIE-ID ::= 352
id-TNLCapacityIndicator ProtocolIE-ID ::= 353
id-CarrierList ProtocolIE-ID ::= 354
id-ULCarrierList ProtocolIE-ID ::= 355
id-FrequencyShift7p5khz ProtocolIE-ID ::= 356
id-SSB-PositionsInBurst ProtocolIE-ID ::= 357
id-NRPRACHConfig ProtocolIE-ID ::= 358
id-RACHReportInformationList ProtocolIE-ID ::= 359
id-RLFReportInformationList ProtocolIE-ID ::= 360
id-TDD-UL-DLConfigCommonNR ProtocolIE-ID ::= 361
id-CNPacketDelayBudgetDownlink ProtocolIE-ID ::= 362
id-ExtendedPacketDelayBudget ProtocolIE-ID ::= 363
id-TSCTrafficCharacteristics ProtocolIE-ID ::= 364
id-ReportingRequestType ProtocolIE-ID ::= 365
id-TimeReferenceInformation ProtocolIE-ID ::= 366
id-CNPacketDelayBudgetUplink ProtocolIE-ID ::= 369
id-AdditionalPDCPDuplicationTNL-List ProtocolIE-ID ::= 370
id-RLCDuplicationInformation ProtocolIE-ID ::= 371
id-AdditionalDuplicationIndication ProtocolIE-ID ::= 372
id-ConditionalInterDUMobilityInformation ProtocolIE-ID ::= 373
id-ConditionalIntraDUMobilityInformation ProtocolIE-ID ::= 374
id-targetCellsToCancel ProtocolIE-ID ::= 375
id-requestedTargetCellGlobalID ProtocolIE-ID ::= 376
id-ManagementBasedMDTPLMNList ProtocolIE-ID ::= 377
id-TraceCollectionEntityIPAddress ProtocolIE-ID ::= 378
id-PrivacyIndicator ProtocolIE-ID ::= 379
id-TraceCollectionEntityURI ProtocolIE-ID ::= 380
id-mdtConfiguration ProtocolIE-ID ::= 381
id-ServingNID ProtocolIE-ID ::= 382
id-NPNBroadcastInformation ProtocolIE-ID ::= 383
id-NPNSupportInfo ProtocolIE-ID ::= 384
id-NID ProtocolIE-ID ::= 385
id-AvailableSNPN-ID-List ProtocolIE-ID ::= 386
id-SIB10-message ProtocolIE-ID ::= 387
id-DLCarrierList ProtocolIE-ID ::= 389
id-ExtendedTAISliceSupportList ProtocolIE-ID ::= 390
id-RequestedSRSTransmissionCharacteristics ProtocolIE-ID ::= 391
id-PosAssistance-Information ProtocolIE-ID ::= 392
id-PosBroadcast ProtocolIE-ID ::= 393
id-RoutingID ProtocolIE-ID ::= 394
id-PosAssistanceInformationFailureList ProtocolIE-ID ::= 395
id-PosMeasurementQuantities ProtocolIE-ID ::= 396
id-PosMeasurementResultList ProtocolIE-ID ::= 397
id-TRPInformationTypeListTRPReq ProtocolIE-ID ::= 398
id-TRPInformationTypeItem ProtocolIE-ID ::= 399
id-TRPInformationListTRPResp ProtocolIE-ID ::= 400
id-TRPInformationItem ProtocolIE-ID ::= 401
id-LMF-MeasurementID ProtocolIE-ID ::= 402
id-SRSType ProtocolIE-ID ::= 403
id-ActivationTime ProtocolIE-ID ::= 404
id-AbortTransmission ProtocolIE-ID ::= 405
id-PositioningBroadcastCells ProtocolIE-ID ::= 406
id-SRSConfiguration ProtocolIE-ID ::= 407
id-PosReportCharacteristics ProtocolIE-ID ::= 408
id-PosMeasurementPeriodicity ProtocolIE-ID ::= 409
id-TRPList ProtocolIE-ID ::= 410
id-RAN-MeasurementID ProtocolIE-ID ::= 411
id-LMF-UE-MeasurementID ProtocolIE-ID ::= 412
id-RAN-UE-MeasurementID ProtocolIE-ID ::= 413
id-E-CID-MeasurementQuantities ProtocolIE-ID ::= 414
id-E-CID-MeasurementQuantities-Item ProtocolIE-ID ::= 415
id-E-CID-MeasurementPeriodicity ProtocolIE-ID ::= 416
id-E-CID-MeasurementResult ProtocolIE-ID ::= 417
id-Cell-Portion-ID ProtocolIE-ID ::= 418
id-SFNInitialisationTime ProtocolIE-ID ::= 419
id-SystemFrameNumber ProtocolIE-ID ::= 420
id-SlotNumber ProtocolIE-ID ::= 421
id-TRP-MeasurementRequestList ProtocolIE-ID ::= 422
id-MeasurementBeamInfoRequest ProtocolIE-ID ::= 423
id-E-CID-ReportCharacteristics ProtocolIE-ID ::= 424
id-ConfiguredTACIndication ProtocolIE-ID ::= 425
id-Extended-GNB-DU-Name ProtocolIE-ID ::= 426
id-Extended-GNB-CU-Name ProtocolIE-ID ::= 427
END
F1AP-Containers {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
ngran-access (22) modules (3) f1ap (3) version1 (1) f1ap-Containers (5) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
Criticality,
Presence,
PrivateIE-ID,
ProtocolExtensionID,
ProtocolIE-ID
FROM F1AP-CommonDataTypes
maxPrivateIEs,
maxProtocolExtensions,
maxProtocolIEs
FROM F1AP-Constants;
-- **************************************************************
--
-- Class Definition for Protocol IEs
--
-- **************************************************************
F1AP-PROTOCOL-IES ::= CLASS {
&id ProtocolIE-ID UNIQUE,
&criticality Criticality,
&Value,
&presence Presence
}
WITH SYNTAX {
ID &id
CRITICALITY &criticality
TYPE &Value
PRESENCE &presence
}
-- **************************************************************
--
-- Class Definition for Protocol IEs
--
-- **************************************************************
F1AP-PROTOCOL-IES-PAIR ::= CLASS {
&id ProtocolIE-ID UNIQUE,
&firstCriticality Criticality,
&FirstValue,
&secondCriticality Criticality,
&SecondValue,
&presence Presence
}
WITH SYNTAX {
ID &id
FIRST CRITICALITY &firstCriticality
FIRST TYPE &FirstValue
SECOND CRITICALITY &secondCriticality
SECOND TYPE &SecondValue
PRESENCE &presence
}
-- **************************************************************
--
-- Class Definition for Protocol Extensions
--
-- **************************************************************
F1AP-PROTOCOL-EXTENSION ::= CLASS {
&id ProtocolExtensionID UNIQUE,
&criticality Criticality,
&Extension,
&presence Presence
}
WITH SYNTAX {
ID &id
CRITICALITY &criticality
EXTENSION &Extension
PRESENCE &presence
}
-- **************************************************************
--
-- Class Definition for Private IEs
--
-- **************************************************************
F1AP-PRIVATE-IES ::= CLASS {
&id PrivateIE-ID,
&criticality Criticality,
&Value,
&presence Presence
}
WITH SYNTAX {
ID &id
CRITICALITY &criticality
TYPE &Value
PRESENCE &presence
}
-- **************************************************************
--
-- Container for Protocol IEs
--
-- **************************************************************
ProtocolIE-Container {F1AP-PROTOCOL-IES : IEsSetParam} ::=
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
ProtocolIE-Field {{IEsSetParam}}
ProtocolIE-SingleContainer {F1AP-PROTOCOL-IES : IEsSetParam} ::=
ProtocolIE-Field {{IEsSetParam}}
ProtocolIE-Field {F1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
id F1AP-PROTOCOL-IES.&id ({IEsSetParam}),
criticality F1AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}),
value F1AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id})
}
-- **************************************************************
--
-- Container for Protocol IE Pairs
--
-- **************************************************************
ProtocolIE-ContainerPair {F1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
ProtocolIE-FieldPair {{IEsSetParam}}
ProtocolIE-FieldPair {F1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE {
id F1AP-PROTOCOL-IES-PAIR.&id ({IEsSetParam}),
firstCriticality F1AP-PROTOCOL-IES-PAIR.&firstCriticality ({IEsSetParam}{@id}),
firstValue F1AP-PROTOCOL-IES-PAIR.&FirstValue ({IEsSetParam}{@id}),
secondCriticality F1AP-PROTOCOL-IES-PAIR.&secondCriticality ({IEsSetParam}{@id}),
secondValue F1AP-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id})
}
-- **************************************************************
--
-- Container for Protocol Extensions
--
-- **************************************************************
ProtocolExtensionContainer {F1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::=
SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
ProtocolExtensionField {{ExtensionSetParam}}
ProtocolExtensionField {F1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
id F1AP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}),
criticality F1AP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}),
extensionValue F1AP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id})
}
-- **************************************************************
--
-- Container for Private IEs
--
-- **************************************************************
PrivateIE-Container {F1AP-PRIVATE-IES : IEsSetParam } ::=
SEQUENCE (SIZE (1.. maxPrivateIEs)) OF
PrivateIE-Field {{IEsSetParam}}
PrivateIE-Field {F1AP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
id F1AP-PRIVATE-IES.&id ({IEsSetParam}),
criticality F1AP-PRIVATE-IES.&criticality ({IEsSetParam}{@id}),
value F1AP-PRIVATE-IES.&Value ({IEsSetParam}{@id})
}
END
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
-- **************************************************************
--
-- Elementary Procedure definitions
--
-- **************************************************************
F1AP-PDU-Descriptions {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
ngran-access (22) modules (3) f1ap (3) version1 (1) f1ap-PDU-Descriptions (0)}
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
Criticality,
ProcedureCode
FROM F1AP-CommonDataTypes
Reset,
ResetAcknowledge,
F1SetupRequest,
F1SetupResponse,
F1SetupFailure,
GNBDUConfigurationUpdate,
GNBDUConfigurationUpdateAcknowledge,
GNBDUConfigurationUpdateFailure,
GNBCUConfigurationUpdate,
GNBCUConfigurationUpdateAcknowledge,
GNBCUConfigurationUpdateFailure,
UEContextSetupRequest,
UEContextSetupResponse,
UEContextSetupFailure,
UEContextReleaseCommand,
UEContextReleaseComplete,
UEContextModificationRequest,
UEContextModificationResponse,
UEContextModificationFailure,
UEContextModificationRequired,
UEContextModificationConfirm,
ErrorIndication,
UEContextReleaseRequest,
DLRRCMessageTransfer,
ULRRCMessageTransfer,
GNBDUResourceCoordinationRequest,
GNBDUResourceCoordinationResponse,
PrivateMessage,
UEInactivityNotification,
InitialULRRCMessageTransfer,
SystemInformationDeliveryCommand,
Paging,
Notify,
WriteReplaceWarningRequest,
WriteReplaceWarningResponse,
PWSCancelRequest,
PWSCancelResponse,
PWSRestartIndication,
PWSFailureIndication,
GNBDUStatusIndication,
RRCDeliveryReport,
UEContextModificationRefuse,
F1RemovalRequest,
F1RemovalResponse,
F1RemovalFailure,
NetworkAccessRateReduction,
TraceStart,
DeactivateTrace,
DUCURadioInformationTransfer,
CUDURadioInformationTransfer,
BAPMappingConfiguration,
BAPMappingConfigurationAcknowledge,
GNBDUResourceConfiguration,
GNBDUResourceConfigurationAcknowledge,
IABTNLAddressRequest,
IABTNLAddressResponse,
IABUPConfigurationUpdateRequest,
IABUPConfigurationUpdateResponse,
IABUPConfigurationUpdateFailure,
ResourceStatusRequest,
ResourceStatusResponse,
ResourceStatusFailure,
ResourceStatusUpdate,
AccessAndMobilityIndication,
ReferenceTimeInformationReportingControl,
ReferenceTimeInformationReport,
AccessSuccess,
CellTrafficTrace,
PositioningMeasurementRequest,
PositioningMeasurementResponse,
PositioningMeasurementFailure,
PositioningAssistanceInformationControl,
PositioningAssistanceInformationFeedback,
PositioningMeasurementReport,
PositioningMeasurementAbort,
PositioningMeasurementFailureIndication,
PositioningMeasurementUpdate,
TRPInformationRequest,
TRPInformationResponse,
TRPInformationFailure,
PositioningInformationRequest,
PositioningInformationResponse,
PositioningInformationFailure,
PositioningActivationRequest,
PositioningActivationResponse,
PositioningActivationFailure,
PositioningDeactivation,
PositioningInformationUpdate,
E-CIDMeasurementInitiationRequest,
E-CIDMeasurementInitiationResponse,
E-CIDMeasurementInitiationFailure,
E-CIDMeasurementFailureIndication,
E-CIDMeasurementReport,
E-CIDMeasurementTerminationCommand
FROM F1AP-PDU-Contents
id-Reset,
id-F1Setup,
id-gNBDUConfigurationUpdate,
id-gNBCUConfigurationUpdate,
id-UEContextSetup,
id-UEContextRelease,
id-UEContextModification,
id-UEContextModificationRequired,
id-ErrorIndication,
id-UEContextReleaseRequest,
id-DLRRCMessageTransfer,
id-ULRRCMessageTransfer,
id-GNBDUResourceCoordination,
id-privateMessage,
id-UEInactivityNotification,
id-InitialULRRCMessageTransfer,
id-SystemInformationDeliveryCommand,
id-Paging,
id-Notify,
id-WriteReplaceWarning,
id-PWSCancel,
id-PWSRestartIndication,
id-PWSFailureIndication,
id-GNBDUStatusIndication,
id-RRCDeliveryReport,
id-F1Removal,
id-NetworkAccessRateReduction,
id-TraceStart,
id-DeactivateTrace,
id-DUCURadioInformationTransfer,
id-CUDURadioInformationTransfer,
id-BAPMappingConfiguration,
id-GNBDUResourceConfiguration,
id-IABTNLAddressAllocation,
id-IABUPConfigurationUpdate,
id-resourceStatusReportingInitiation,
id-resourceStatusReporting,
id-accessAndMobilityIndication,
id-ReferenceTimeInformationReportingControl,
id-ReferenceTimeInformationReport,
id-accessSuccess,
id-cellTrafficTrace,
id-PositioningMeasurementExchange,
id-PositioningAssistanceInformationControl,
id-PositioningAssistanceInformationFeedback,
id-PositioningMeasurementReport,
id-PositioningMeasurementAbort,
id-PositioningMeasurementFailureIndication,
id-PositioningMeasurementUpdate,
id-TRPInformationExchange,
id-PositioningInformationExchange,
id-PositioningActivation,
id-PositioningDeactivation,
id-PositioningInformationUpdate,
id-E-CIDMeasurementInitiation,
id-E-CIDMeasurementFailureIndication,
id-E-CIDMeasurementReport,
id-E-CIDMeasurementTermination
FROM F1AP-Constants
ProtocolIE-SingleContainer{},
F1AP-PROTOCOL-IES
FROM F1AP-Containers;
-- **************************************************************
--
-- Interface Elementary Procedure Class
--
-- **************************************************************
F1AP-ELEMENTARY-PROCEDURE ::= CLASS {
&InitiatingMessage ,
&SuccessfulOutcome OPTIONAL,
&UnsuccessfulOutcome OPTIONAL,
&procedureCode ProcedureCode UNIQUE,
&criticality Criticality DEFAULT ignore
}
WITH SYNTAX {
INITIATING MESSAGE &InitiatingMessage
[SUCCESSFUL OUTCOME &SuccessfulOutcome]
[UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome]
PROCEDURE CODE &procedureCode
[CRITICALITY &criticality]
}
-- **************************************************************
--
-- Interface PDU Definition
--
-- **************************************************************
F1AP-PDU ::= CHOICE {
initiatingMessage InitiatingMessage,
successfulOutcome SuccessfulOutcome,
unsuccessfulOutcome UnsuccessfulOutcome,
choice-extension ProtocolIE-SingleContainer { { F1AP-PDU-ExtIEs} }
}
F1AP-PDU-ExtIEs F1AP-PROTOCOL-IES ::= { -- this extension is not used
...
}
InitiatingMessage ::= SEQUENCE {
procedureCode F1AP-ELEMENTARY-PROCEDURE.&procedureCode ({F1AP-ELEMENTARY-PROCEDURES}),
criticality F1AP-ELEMENTARY-PROCEDURE.&criticality ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value F1AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
SuccessfulOutcome ::= SEQUENCE {
procedureCode F1AP-ELEMENTARY-PROCEDURE.&procedureCode ({F1AP-ELEMENTARY-PROCEDURES}),
criticality F1AP-ELEMENTARY-PROCEDURE.&criticality ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value F1AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
UnsuccessfulOutcome ::= SEQUENCE {
procedureCode F1AP-ELEMENTARY-PROCEDURE.&procedureCode ({F1AP-ELEMENTARY-PROCEDURES}),
criticality F1AP-ELEMENTARY-PROCEDURE.&criticality ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value F1AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({F1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
-- **************************************************************
--
-- Interface Elementary Procedure List
--
-- **************************************************************
F1AP-ELEMENTARY-PROCEDURES F1AP-ELEMENTARY-PROCEDURE ::= {
F1AP-ELEMENTARY-PROCEDURES-CLASS-1 |
F1AP-ELEMENTARY-PROCEDURES-CLASS-2,
...
}
F1AP-ELEMENTARY-PROCEDURES-CLASS-1 F1AP-ELEMENTARY-PROCEDURE ::= {
reset |
f1Setup |
gNBDUConfigurationUpdate |
gNBCUConfigurationUpdate |
uEContextSetup |
uEContextRelease |
uEContextModification |
uEContextModificationRequired |
writeReplaceWarning |
pWSCancel |
gNBDUResourceCoordination |
f1Removal |
bAPMappingConfiguration |
gNBDUResourceConfiguration |
iABTNLAddressAllocation |
iABUPConfigurationUpdate |
resourceStatusReportingInitiation |
positioningMeasurementExchange |
tRPInformationExchange |
positioningInformationExchange |
positioningActivation |
e-CIDMeasurementInitiation,
...
}
F1AP-ELEMENTARY-PROCEDURES-CLASS-2 F1AP-ELEMENTARY-PROCEDURE ::= {
errorIndication |
uEContextReleaseRequest |
dLRRCMessageTransfer |
uLRRCMessageTransfer |
uEInactivityNotification |
privateMessage |
initialULRRCMessageTransfer |
systemInformationDelivery |
paging |
notify |
pWSRestartIndication |
pWSFailureIndication |
gNBDUStatusIndication |
rRCDeliveryReport |
networkAccessRateReduction |
traceStart |
deactivateTrace |
dUCURadioInformationTransfer |
cUDURadioInformationTransfer |
resourceStatusReporting |
accessAndMobilityIndication |
referenceTimeInformationReportingControl|
referenceTimeInformationReport |
accessSuccess |
cellTrafficTrace |
positioningAssistanceInformationControl |
positioningAssistanceInformationFeedback |
positioningMeasurementReport |
positioningMeasurementAbort |
positioningMeasurementFailureIndication |
positioningMeasurementUpdate |
positioningDeactivation |
e-CIDMeasurementFailureIndication |
e-CIDMeasurementReport |
e-CIDMeasurementTermination |
positioningInformationUpdate,
...
}
-- **************************************************************
--
-- Interface Elementary Procedures
--
-- **************************************************************
reset F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE Reset
SUCCESSFUL OUTCOME ResetAcknowledge
PROCEDURE CODE id-Reset
CRITICALITY reject
}
f1Setup F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE F1SetupRequest
SUCCESSFUL OUTCOME F1SetupResponse
UNSUCCESSFUL OUTCOME F1SetupFailure
PROCEDURE CODE id-F1Setup
CRITICALITY reject
}
gNBDUConfigurationUpdate F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE GNBDUConfigurationUpdate
SUCCESSFUL OUTCOME GNBDUConfigurationUpdateAcknowledge
UNSUCCESSFUL OUTCOME GNBDUConfigurationUpdateFailure
PROCEDURE CODE id-gNBDUConfigurationUpdate
CRITICALITY reject
}
gNBCUConfigurationUpdate F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE GNBCUConfigurationUpdate
SUCCESSFUL OUTCOME GNBCUConfigurationUpdateAcknowledge
UNSUCCESSFUL OUTCOME GNBCUConfigurationUpdateFailure
PROCEDURE CODE id-gNBCUConfigurationUpdate
CRITICALITY reject
}
uEContextSetup F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UEContextSetupRequest
SUCCESSFUL OUTCOME UEContextSetupResponse
UNSUCCESSFUL OUTCOME UEContextSetupFailure
PROCEDURE CODE id-UEContextSetup
CRITICALITY reject
}
uEContextRelease F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UEContextReleaseCommand
SUCCESSFUL OUTCOME UEContextReleaseComplete
PROCEDURE CODE id-UEContextRelease
CRITICALITY reject
}
uEContextModification F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UEContextModificationRequest
SUCCESSFUL OUTCOME UEContextModificationResponse
UNSUCCESSFUL OUTCOME UEContextModificationFailure
PROCEDURE CODE id-UEContextModification
CRITICALITY reject
}
uEContextModificationRequired F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UEContextModificationRequired
SUCCESSFUL OUTCOME UEContextModificationConfirm
UNSUCCESSFUL OUTCOME UEContextModificationRefuse
PROCEDURE CODE id-UEContextModificationRequired
CRITICALITY reject
}
writeReplaceWarning F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE WriteReplaceWarningRequest
SUCCESSFUL OUTCOME WriteReplaceWarningResponse
PROCEDURE CODE id-WriteReplaceWarning
CRITICALITY reject
}
pWSCancel F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PWSCancelRequest
SUCCESSFUL OUTCOME PWSCancelResponse
PROCEDURE CODE id-PWSCancel
CRITICALITY reject
}
errorIndication F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ErrorIndication
PROCEDURE CODE id-ErrorIndication
CRITICALITY ignore
}
uEContextReleaseRequest F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UEContextReleaseRequest
PROCEDURE CODE id-UEContextReleaseRequest
CRITICALITY ignore
}
initialULRRCMessageTransfer F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE InitialULRRCMessageTransfer
PROCEDURE CODE id-InitialULRRCMessageTransfer
CRITICALITY ignore
}
dLRRCMessageTransfer F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE DLRRCMessageTransfer
PROCEDURE CODE id-DLRRCMessageTransfer
CRITICALITY ignore
}
uLRRCMessageTransfer F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ULRRCMessageTransfer
PROCEDURE CODE id-ULRRCMessageTransfer
CRITICALITY ignore
}
uEInactivityNotification F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UEInactivityNotification
PROCEDURE CODE id-UEInactivityNotification
CRITICALITY ignore
}
gNBDUResourceCoordination F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE GNBDUResourceCoordinationRequest
SUCCESSFUL OUTCOME GNBDUResourceCoordinationResponse
PROCEDURE CODE id-GNBDUResourceCoordination
CRITICALITY reject
}
privateMessage F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PrivateMessage
PROCEDURE CODE id-privateMessage
CRITICALITY ignore
}
systemInformationDelivery F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE SystemInformationDeliveryCommand
PROCEDURE CODE id-SystemInformationDeliveryCommand
CRITICALITY ignore
}
paging F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE Paging
PROCEDURE CODE id-Paging
CRITICALITY ignore
}
notify F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE Notify
PROCEDURE CODE id-Notify
CRITICALITY ignore
}
networkAccessRateReduction F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE NetworkAccessRateReduction
PROCEDURE CODE id-NetworkAccessRateReduction
CRITICALITY ignore
}
pWSRestartIndication F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PWSRestartIndication
PROCEDURE CODE id-PWSRestartIndication
CRITICALITY ignore
}
pWSFailureIndication F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PWSFailureIndication
PROCEDURE CODE id-PWSFailureIndication
CRITICALITY ignore
}
gNBDUStatusIndication F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE GNBDUStatusIndication
PROCEDURE CODE id-GNBDUStatusIndication
CRITICALITY ignore
}
rRCDeliveryReport F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RRCDeliveryReport
PROCEDURE CODE id-RRCDeliveryReport
CRITICALITY ignore
}
f1Removal F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE F1RemovalRequest
SUCCESSFUL OUTCOME F1RemovalResponse
UNSUCCESSFUL OUTCOME F1RemovalFailure
PROCEDURE CODE id-F1Removal
CRITICALITY reject
}
traceStart F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE TraceStart
PROCEDURE CODE id-TraceStart
CRITICALITY ignore
}
deactivateTrace F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE DeactivateTrace
PROCEDURE CODE id-DeactivateTrace
CRITICALITY ignore
}
dUCURadioInformationTransfer F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE DUCURadioInformationTransfer
PROCEDURE CODE id-DUCURadioInformationTransfer
CRITICALITY ignore
}
cUDURadioInformationTransfer F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE CUDURadioInformationTransfer
PROCEDURE CODE id-CUDURadioInformationTransfer
CRITICALITY ignore
}
bAPMappingConfiguration F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE BAPMappingConfiguration
SUCCESSFUL OUTCOME BAPMappingConfigurationAcknowledge
PROCEDURE CODE id-BAPMappingConfiguration
CRITICALITY reject
}
gNBDUResourceConfiguration F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE GNBDUResourceConfiguration
SUCCESSFUL OUTCOME GNBDUResourceConfigurationAcknowledge
PROCEDURE CODE id-GNBDUResourceConfiguration
CRITICALITY reject
}
iABTNLAddressAllocation F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE IABTNLAddressRequest
SUCCESSFUL OUTCOME IABTNLAddressResponse
PROCEDURE CODE id-IABTNLAddressAllocation
CRITICALITY reject
}
iABUPConfigurationUpdate F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE IABUPConfigurationUpdateRequest
SUCCESSFUL OUTCOME IABUPConfigurationUpdateResponse
UNSUCCESSFUL OUTCOME IABUPConfigurationUpdateFailure
PROCEDURE CODE id-IABUPConfigurationUpdate
CRITICALITY reject
}
resourceStatusReportingInitiation F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ResourceStatusRequest
SUCCESSFUL OUTCOME ResourceStatusResponse
UNSUCCESSFUL OUTCOME ResourceStatusFailure
PROCEDURE CODE id-resourceStatusReportingInitiation
CRITICALITY reject
}
resourceStatusReporting F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ResourceStatusUpdate
PROCEDURE CODE id-resourceStatusReporting
CRITICALITY ignore
}
accessAndMobilityIndication F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE AccessAndMobilityIndication
PROCEDURE CODE id-accessAndMobilityIndication
CRITICALITY ignore
}
referenceTimeInformationReportingControl F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ReferenceTimeInformationReportingControl
PROCEDURE CODE id-ReferenceTimeInformationReportingControl
CRITICALITY ignore
}
referenceTimeInformationReport F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ReferenceTimeInformationReport
PROCEDURE CODE id-ReferenceTimeInformationReport
CRITICALITY ignore
}
accessSuccess F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE AccessSuccess
PROCEDURE CODE id-accessSuccess
CRITICALITY ignore
}
cellTrafficTrace F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE CellTrafficTrace
PROCEDURE CODE id-cellTrafficTrace
CRITICALITY ignore
}
positioningAssistanceInformationControl F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PositioningAssistanceInformationControl
PROCEDURE CODE id-PositioningAssistanceInformationControl
CRITICALITY ignore
}
positioningAssistanceInformationFeedback F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PositioningAssistanceInformationFeedback
PROCEDURE CODE id-PositioningAssistanceInformationFeedback
CRITICALITY ignore
}
positioningMeasurementExchange F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PositioningMeasurementRequest
SUCCESSFUL OUTCOME PositioningMeasurementResponse
UNSUCCESSFUL OUTCOME PositioningMeasurementFailure
PROCEDURE CODE id-PositioningMeasurementExchange
CRITICALITY reject
}
positioningMeasurementReport F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PositioningMeasurementReport
PROCEDURE CODE id-PositioningMeasurementReport
CRITICALITY ignore
}
positioningMeasurementAbort F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PositioningMeasurementAbort
PROCEDURE CODE id-PositioningMeasurementAbort
CRITICALITY ignore
}
positioningMeasurementFailureIndication F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PositioningMeasurementFailureIndication
PROCEDURE CODE id-PositioningMeasurementFailureIndication
CRITICALITY ignore
}
positioningMeasurementUpdate F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PositioningMeasurementUpdate
PROCEDURE CODE id-PositioningMeasurementUpdate
CRITICALITY ignore
}
tRPInformationExchange F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE TRPInformationRequest
SUCCESSFUL OUTCOME TRPInformationResponse
UNSUCCESSFUL OUTCOME TRPInformationFailure
PROCEDURE CODE id-TRPInformationExchange
CRITICALITY reject
}
positioningInformationExchange F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PositioningInformationRequest
SUCCESSFUL OUTCOME PositioningInformationResponse
UNSUCCESSFUL OUTCOME PositioningInformationFailure
PROCEDURE CODE id-PositioningInformationExchange
CRITICALITY reject
}
positioningActivation F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PositioningActivationRequest
SUCCESSFUL OUTCOME PositioningActivationResponse
UNSUCCESSFUL OUTCOME PositioningActivationFailure
PROCEDURE CODE id-PositioningActivation
CRITICALITY reject
}
positioningDeactivation F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PositioningDeactivation
PROCEDURE CODE id-PositioningDeactivation
CRITICALITY ignore
}
e-CIDMeasurementInitiation F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE E-CIDMeasurementInitiationRequest
SUCCESSFUL OUTCOME E-CIDMeasurementInitiationResponse
UNSUCCESSFUL OUTCOME E-CIDMeasurementInitiationFailure
PROCEDURE CODE id-E-CIDMeasurementInitiation
CRITICALITY reject
}
e-CIDMeasurementFailureIndication F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE E-CIDMeasurementFailureIndication
PROCEDURE CODE id-E-CIDMeasurementFailureIndication
CRITICALITY ignore
}
e-CIDMeasurementReport F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE E-CIDMeasurementReport
PROCEDURE CODE id-E-CIDMeasurementReport
CRITICALITY ignore
}
e-CIDMeasurementTermination F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE E-CIDMeasurementTerminationCommand
PROCEDURE CODE id-E-CIDMeasurementTermination
CRITICALITY ignore
}
positioningInformationUpdate F1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PositioningInformationUpdate
PROCEDURE CODE id-PositioningInformationUpdate
CRITICALITY ignore
}
END
......@@ -46,7 +46,6 @@
inline void ASN_DEBUG(const char *fmt, ...);
#endif
#include "F1AP_Active-Cells-List.h"
#include "F1AP_RAT-FrequencyPriorityInformation.h"
#include "F1AP_DLUPTNLInformation-ToBeSetup-Item.h"
#include "F1AP_PrivateMessage.h"
......@@ -55,6 +54,7 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_NRPCI.h"
#include "F1AP_Transmission-Bandwidth.h"
#include "F1AP_SIB1-message.h"
#include "F1AP_SibtypetobeupdatedListItem.h"
#include "F1AP_GNBCUConfigurationUpdateAcknowledge.h"
#include "F1AP_DRBs-Setup-Item.h"
#include "F1AP_EUTRA-NR-CellResourceCoordinationReqAck-Container.h"
......@@ -75,7 +75,6 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_DRBs-Required-ToBeModified-Item.h"
#include "F1AP_BitRate.h"
#include "F1AP_SRBs-ToBeSetup-List.h"
#include "F1AP_ConcurrentWarningMessageIndicator.h"
#include "F1AP_CriticalityDiagnostics-IE-Item.h"
#include "F1AP_GNB-CU-TNL-Association-To-Update-List.h"
#include "F1AP_DRB-Notify-List.h"
......@@ -85,6 +84,7 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_PWS-Failed-NR-CGI-List.h"
#include "F1AP_InitialULRRCMessageTransfer.h"
#include "F1AP_Served-Cell-Information.h"
#include "F1AP_ServedPLMNs-Item.h"
#include "F1AP_Served-EUTRA-Cells-Information.h"
#include "F1AP_Cells-Broadcast-Cancelled-Item.h"
#include "F1AP_F1SetupRequest.h"
......@@ -128,13 +128,11 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_TransactionID.h"
#include "F1AP_AllocationAndRetentionPriority.h"
#include "F1AP_ShortDRXCycleLength.h"
#include "F1AP_BroadcastPLMNs-Item.h"
#include "F1AP_DRB-Information.h"
#include "F1AP_TimeToWait.h"
#include "F1AP_NonDynamic5QIDescriptor.h"
#include "F1AP_C-RNTI.h"
#include "F1AP_MIB-message.h"
#include "F1AP_SIBtype-Item.h"
#include "F1AP_Served-Cells-To-Modify-List.h"
#include "F1AP_NRCGI.h"
#include "F1AP_DuplicationActivation.h"
......@@ -187,6 +185,7 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_CellULConfigured.h"
#include "F1AP_DRB-Activity.h"
#include "F1AP_GNB-CU-TNL-Association-Failed-To-Setup-Item.h"
#include "F1AP_ProtocolIE-ID.h"
#include "F1AP_PrivateIE-ID.h"
#include "F1AP_WriteReplaceWarningResponse.h"
#include "F1AP_CauseMisc.h"
......@@ -231,9 +230,7 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_SUL-Information.h"
#include "F1AP_CriticalityDiagnostics-IE-List.h"
#include "F1AP_EUTRA-FDD-Info.h"
#include "F1AP_BroadcastPLMNs-List.h"
#include "F1AP_Served-Cells-To-Delete-Item.h"
#include "F1AP_ListofEUTRACellsinGNBDUCoordination.h"
#include "F1AP_Candidate-SpCell-Item.h"
#include "F1AP_Cells-To-Be-Broadcast-List.h"
#include "F1AP_ULRRCMessageTransfer.h"
......@@ -255,7 +252,6 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_SRBs-ToBeReleased-List.h"
#include "F1AP_MeasGapConfig.h"
#include "F1AP_NR-Mode-Info.h"
#include "F1AP_Active-Cells-Item.h"
#include "F1AP_Protected-EUTRA-Resources-List.h"
#include "F1AP_SRBs-FailedToBeSetup-Item.h"
#include "F1AP_ResetAll.h"
......@@ -287,7 +283,6 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_UEContextReleaseRequest.h"
#include "F1AP_GNB-DU-Name.h"
#include "F1AP_DRBs-ToBeModified-Item.h"
#include "F1AP_SIBtype-List.h"
#include "F1AP_EUTRA-NR-CellResourceCoordinationReq-Container.h"
#include "F1AP_DRBs-SetupMod-List.h"
#include "F1AP_DRBs-Required-ToBeModified-List.h"
......@@ -296,7 +291,6 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_PacketDelayBudget.h"
#include "F1AP_GNBCUConfigurationUpdate.h"
#include "F1AP_Cells-Broadcast-Completed-Item.h"
#include "F1AP_RRCRconfigurationCompleteIndicator.h"
#include "F1AP_PagingPriority.h"
#include "F1AP_Cells-Failed-to-be-Activated-List.h"
#include "F1AP_Endpoint-IP-address-and-port.h"
......@@ -306,7 +300,6 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_ResetType.h"
#include "F1AP_FDD-Info.h"
#include "F1AP_DLUPTNLInformation-ToBeSetup-List.h"
#include "F1AP_QoSFlowIndicator.h"
#include "F1AP_NR-CGI-List-For-Restart-List.h"
#include "F1AP_F1SetupResponse.h"
#include "F1AP_UEContextSetupResponse.h"
......@@ -325,7 +318,6 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_Cells-to-be-Barred-List.h"
#include "F1AP_Presence.h"
#include "F1AP_CellBarred.h"
#include "F1AP_SIBtype.h"
#include "F1AP_RequestType.h"
#include "F1AP_NRFreqInfo.h"
#include "F1AP_Potential-SpCell-Item.h"
......@@ -348,7 +340,6 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_GBR-QoSFlowInformation.h"
#include "F1AP_SCellIndex.h"
#include "F1AP_DRBs-SetupMod-Item.h"
#include "F1AP_TransmissionStopIndicator.h"
#include "F1AP_UEContextSetupFailure.h"
#include "F1AP_DRBs-FailedToBeModified-List.h"
#include "F1AP_DRBs-FailedToBeSetupMod-Item.h"
......
......@@ -139,10 +139,11 @@ int CU_handle_F1_SETUP_REQUEST(instance_t instance,
served_celles_item_p = &(((F1AP_GNB_DU_Served_Cells_ItemIEs_t *)ie->value.choice.GNB_DU_Served_Cells_List.list.array[i])->value.choice.GNB_DU_Served_Cells_Item);
/* tac */
OCTET_STRING_TO_INT16(&(served_celles_item_p->served_Cell_Information.fiveGS_TAC), F1AP_SETUP_REQ(message_p).tac[i]);
LOG_D(F1AP, "F1AP_SETUP_REQ(message_p).tac[%d] %d \n",
i, F1AP_SETUP_REQ(message_p).tac[i]);
if (served_celles_item_p->served_Cell_Information.fiveGS_TAC) {
OCTET_STRING_TO_INT16(served_celles_item_p->served_Cell_Information.fiveGS_TAC, F1AP_SETUP_REQ(message_p).tac[i]);
LOG_D(F1AP, "F1AP_SETUP_REQ(message_p).tac[%d] %d \n",
i, F1AP_SETUP_REQ(message_p).tac[i]);
}
/* - nRCGI */
TBCD_TO_MCC_MNC(&(served_celles_item_p->served_Cell_Information.nRCGI.pLMN_Identity), F1AP_SETUP_REQ(message_p).mcc[i],
F1AP_SETUP_REQ(message_p).mnc[i],
......@@ -356,20 +357,30 @@ int CU_send_F1_SETUP_RESPONSE(instance_t instance,
//for (int n = 0; n < f1ap_setup_resp->SI_container_length[i][0]; n++)
// printf("%02x ", f1ap_setup_resp->SI_container[i][0][n]);
//printf("\n");
OCTET_STRING_fromBuf(&gNB_CUSystemInformation->sImessage,
(const char*)f1ap_setup_resp->SI_container[i][0],
f1ap_setup_resp->SI_container_length[i][0]);
LOG_D(F1AP, "f1ap_setup_resp->SI_container_length = %d \n", f1ap_setup_resp->SI_container_length[0][0]);
for (int sIBtype=2;sIBtype<33;sIBtype++) {
if (f1ap_setup_resp->SI_container[i][sIBtype]!=NULL) {
AssertFatal(sIBtype < 6 || sIBtype == 9, "Illegal SI type %d\n",sIBtype);
F1AP_SibtypetobeupdatedListItem_t *sib_item = calloc(1,sizeof(*sib_item));
memset((void*)sib_item,0,sizeof(*sib_item));
sib_item->sIBtype = sIBtype;
OCTET_STRING_fromBuf(&sib_item->sIBmessage,
(const char*)f1ap_setup_resp->SI_container[i][sIBtype],
f1ap_setup_resp->SI_container_length[i][sIBtype]);
LOG_D(F1AP, "f1ap_setup_resp->SI_container_length[%d][%d] = %d \n", i,sIBtype,f1ap_setup_resp->SI_container_length[i][sIBtype]);
ASN_SEQUENCE_ADD(&gNB_CUSystemInformation->sibtypetobeupdatedlist.list,sib_item);
}
}
cells_to_be_activated_list_itemExtIEs->extensionValue.choice.GNB_CUSystemInformation = *gNB_CUSystemInformation;
F1AP_ProtocolExtensionContainer_160P9_t p_160P9_t;
memset((void *)&p_160P9_t, 0, sizeof(F1AP_ProtocolExtensionContainer_160P9_t));
F1AP_ProtocolExtensionContainer_154P112_t p_154P112_t;
memset((void *)&p_154P112_t, 0, sizeof(F1AP_ProtocolExtensionContainer_154P112_t));
ASN_SEQUENCE_ADD(&p_160P9_t.list,
ASN_SEQUENCE_ADD(&p_154P112_t.list,
cells_to_be_activated_list_itemExtIEs);
cells_to_be_activated_list_item.iE_Extensions = (struct F1AP_ProtocolExtensionContainer*)&p_160P9_t;
cells_to_be_activated_list_item.iE_Extensions = (struct F1AP_ProtocolExtensionContainer*)&p_154P112_t;
free(gNB_CUSystemInformation);
gNB_CUSystemInformation = NULL;
......@@ -829,17 +840,13 @@ int CU_send_gNB_CU_CONFIGURATION_UPDATE(instance_t instance, module_id_t du_mod_
protected_eutra_resources_item_ies = (F1AP_Protected_EUTRA_Resources_ItemIEs_t *)calloc(1, sizeof(F1AP_Protected_EUTRA_Resources_ItemIEs_t));
protected_eutra_resources_item_ies->id = F1AP_ProtocolIE_ID_id_Protected_EUTRA_Resources_List;
protected_eutra_resources_item_ies->criticality = F1AP_Criticality_reject;
protected_eutra_resources_item_ies->value.present = F1AP_Protected_EUTRA_Resources_ItemIEs__value_PR_SpectrumSharingGroupID;
protected_eutra_resources_item_ies->value.choice.SpectrumSharingGroupID = 1L;
protected_eutra_resources_item_ies->value.present = F1AP_Protected_EUTRA_Resources_ItemIEs__value_PR_Protected_EUTRA_Resources_Item;
((F1AP_Protected_EUTRA_Resources_Item_t*)&protected_eutra_resources_item_ies->value.choice.Protected_EUTRA_Resources_Item)->spectrumSharingGroupID = 123L;
memset(&protected_eutra_resources_item_ies->value.choice.Protected_EUTRA_Resources_Item,0,
sizeof(F1AP_Protected_EUTRA_Resources_Item_t));
ASN_SEQUENCE_ADD(&ie->value.choice.Protected_EUTRA_Resources_List.list, protected_eutra_resources_item_ies);
/* 8.2 ListofEUTRACellsinGNBDUCoordination */
protected_eutra_resources_item_ies = (F1AP_Protected_EUTRA_Resources_ItemIEs_t *)calloc(1, sizeof(F1AP_Protected_EUTRA_Resources_ItemIEs_t));
protected_eutra_resources_item_ies->id = F1AP_ProtocolIE_ID_id_Protected_EUTRA_Resources_List;
protected_eutra_resources_item_ies->criticality = F1AP_Criticality_reject;
protected_eutra_resources_item_ies->value.present = F1AP_Protected_EUTRA_Resources_ItemIEs__value_PR_ListofEUTRACellsinGNBDUCoordination;
/*
F1AP_Served_EUTRA_Cells_Information_t served_eutra_cells_information;
memset((void *)&served_eutra_cells_information, 0, sizeof(F1AP_Served_EUTRA_Cells_Information_t));
......@@ -870,6 +877,7 @@ int CU_send_gNB_CU_CONFIGURATION_UPDATE(instance_t instance, module_id_t du_mod_
ASN_SEQUENCE_ADD(&protected_eutra_resources_item_ies->value.choice.ListofEUTRACellsinGNBDUCoordination.list, &served_eutra_cells_information);
ASN_SEQUENCE_ADD(&ie->value.choice.Protected_EUTRA_Resources_List.list, protected_eutra_resources_item_ies);
*/
}
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
......
......@@ -109,7 +109,7 @@ int CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
/* RNTI */
F1AP_FIND_PROTOCOLIE_BY_ID(F1AP_InitialULRRCMessageTransferIEs_t, ie, container,
F1AP_ProtocolIE_ID_id_C_RNTI, true);
BUFFER_TO_INT16(ie->value.choice.C_RNTI.buf, rnti);
rnti = ie->value.choice.C_RNTI;
/* RRC Container */
F1AP_FIND_PROTOCOLIE_BY_ID(F1AP_InitialULRRCMessageTransferIEs_t, ie, container,
......@@ -260,19 +260,22 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
/* optional */
/* c7. RAT_FrequencyPriorityInformation */
/* TODO */
if (0) {
ie = (F1AP_DLRRCMessageTransferIEs_t *)calloc(1, sizeof(F1AP_DLRRCMessageTransferIEs_t));
ie->id = F1AP_ProtocolIE_ID_id_RAT_FrequencyPriorityInformation;
ie->criticality = F1AP_Criticality_reject;
ie->value.present = F1AP_DLRRCMessageTransferIEs__value_PR_RAT_FrequencyPriorityInformation;
ie->value.choice.RAT_FrequencyPriorityInformation.present = F1AP_RAT_FrequencyPriorityInformation_PR_subscriberProfileIDforRFP;
ie->value.choice.RAT_FrequencyPriorityInformation.choice.subscriberProfileIDforRFP = 123L;
int endc=1;
ie = (F1AP_DLRRCMessageTransferIEs_t *)calloc(1, sizeof(F1AP_DLRRCMessageTransferIEs_t));
ie->id = F1AP_ProtocolIE_ID_id_RAT_FrequencyPriorityInformation;
ie->criticality = F1AP_Criticality_reject;
ie->value.present = F1AP_DLRRCMessageTransferIEs__value_PR_RAT_FrequencyPriorityInformation;
if (endc==1) {
ie->value.choice.RAT_FrequencyPriorityInformation.present = F1AP_RAT_FrequencyPriorityInformation_PR_eNDC;
ie->value.choice.RAT_FrequencyPriorityInformation.choice.eNDC = 123L;
}
else {
ie->value.choice.RAT_FrequencyPriorityInformation.present = F1AP_RAT_FrequencyPriorityInformation_PR_nGRAN;
ie->value.choice.RAT_FrequencyPriorityInformation.choice.nGRAN = 11L;
}
//ie->value.choice.RAT_FrequencyPriorityInformation.present = F1AP_RAT_FrequencyPriorityInformation_PR_rAT_FrequencySelectionPriority;
//ie->value.choice.RAT_FrequencyPriorityInformation.choice.rAT_FrequencySelectionPriority = 123L;
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
}
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
/* encode */
if (f1ap_encode_pdu(&pdu, &buffer, &len) < 0) {
......
......@@ -108,7 +108,7 @@ int CU_send_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
/* mandatory */
/* c4. ServCellIndex */
ie = (F1AP_UEContextSetupRequestIEs_t *)calloc(1, sizeof(F1AP_UEContextSetupRequestIEs_t));
ie->id = F1AP_ProtocolIE_ID_id_ServCellndex;
ie->id = F1AP_ProtocolIE_ID_id_ServCellIndex;
ie->criticality = F1AP_Criticality_reject;
ie->value.present = F1AP_UEContextSetupRequestIEs__value_PR_ServCellIndex;
ie->value.choice.ServCellIndex = 2;
......@@ -379,75 +379,86 @@ int CU_send_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
}
} else {
/* 12.1.2 dRB_Information */
drbs_toBeSetup_item.qoSInformation.present = F1AP_QoSInformation_PR_dRB_Information;
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information = (F1AP_DRB_Information_t *)calloc(1, sizeof(F1AP_DRB_Information_t));
/* 12.1.2 DRB_Information */
drbs_toBeSetup_item.qoSInformation.present = F1AP_QoSInformation_PR_choice_extension;
F1AP_QoSInformation_ExtIEs_t *ie;
ie = (F1AP_QoSInformation_ExtIEs_t *)calloc(1, sizeof(F1AP_QoS_Characteristics_ExtIEs_t));
ie->id = F1AP_ProtocolIE_ID_id_DRB_Information;
ie->criticality = F1AP_Criticality_reject;
ie->value.present = F1AP_QoSInformation_ExtIEs__value_PR_DRB_Information;
F1AP_DRB_Information_t *DRB_Information = &ie->value.choice.DRB_Information;
drbs_toBeSetup_item.qoSInformation.choice.choice_extension = (struct F1AP_ProtocolIE_SingleContainer*)ie;
/* 12.1.2.1 dRB_QoS */
{
/* qoS_Characteristics */
{
int some_decide_qoS_characteristics = 1; // BK: Need Check
if (some_decide_qoS_characteristics) {
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.qoS_Characteristics.present = F1AP_QoS_Characteristics_PR_non_Dynamic_5QI;
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.qoS_Characteristics.choice.non_Dynamic_5QI = (F1AP_NonDynamic5QIDescriptor_t *)calloc(1, sizeof(F1AP_NonDynamic5QIDescriptor_t));
DRB_Information->dRB_QoS.qoS_Characteristics.present = F1AP_QoS_Characteristics_PR_non_Dynamic_5QI;
DRB_Information->dRB_QoS.qoS_Characteristics.choice.non_Dynamic_5QI = (F1AP_NonDynamic5QIDescriptor_t *)calloc(1, sizeof(F1AP_NonDynamic5QIDescriptor_t));
/* fiveQI */
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.qoS_Characteristics.choice.non_Dynamic_5QI->fiveQI = 1L;
DRB_Information->dRB_QoS.qoS_Characteristics.choice.non_Dynamic_5QI->fiveQI = 1L;
/* OPTIONAL */
/* qoSPriorityLevel */
if (0) {
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.qoS_Characteristics.choice.non_Dynamic_5QI->qoSPriorityLevel = (long *)calloc(1, sizeof(long));
*drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.qoS_Characteristics.choice.non_Dynamic_5QI->qoSPriorityLevel = 1L;
DRB_Information->dRB_QoS.qoS_Characteristics.choice.non_Dynamic_5QI->qoSPriorityLevel = (long *)calloc(1, sizeof(long));
*DRB_Information->dRB_QoS.qoS_Characteristics.choice.non_Dynamic_5QI->qoSPriorityLevel = 1L;
}
/* OPTIONAL */
/* averagingWindow */
if (0) {
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.qoS_Characteristics.choice.non_Dynamic_5QI->averagingWindow = (F1AP_AveragingWindow_t *)calloc(1, sizeof(F1AP_AveragingWindow_t));
*drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.qoS_Characteristics.choice.non_Dynamic_5QI->averagingWindow = 1L;
DRB_Information->dRB_QoS.qoS_Characteristics.choice.non_Dynamic_5QI->averagingWindow = (F1AP_AveragingWindow_t *)calloc(1, sizeof(F1AP_AveragingWindow_t));
*DRB_Information->dRB_QoS.qoS_Characteristics.choice.non_Dynamic_5QI->averagingWindow = 1L;
}
/* OPTIONAL */
/* maxDataBurstVolume */
if (0) {
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.qoS_Characteristics.choice.non_Dynamic_5QI->maxDataBurstVolume = (F1AP_MaxDataBurstVolume_t *)calloc(1, sizeof(F1AP_MaxDataBurstVolume_t));
*drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.qoS_Characteristics.choice.non_Dynamic_5QI->maxDataBurstVolume = 1L;
DRB_Information->dRB_QoS.qoS_Characteristics.choice.non_Dynamic_5QI->maxDataBurstVolume = (F1AP_MaxDataBurstVolume_t *)calloc(1, sizeof(F1AP_MaxDataBurstVolume_t));
*DRB_Information->dRB_QoS.qoS_Characteristics.choice.non_Dynamic_5QI->maxDataBurstVolume = 1L;
}
} else {
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.qoS_Characteristics.present = F1AP_QoS_Characteristics_PR_dynamic_5QI;
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI = (F1AP_Dynamic5QIDescriptor_t *)calloc(1, sizeof(F1AP_Dynamic5QIDescriptor_t));
DRB_Information->dRB_QoS.qoS_Characteristics.present = F1AP_QoS_Characteristics_PR_dynamic_5QI;
DRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI = (F1AP_Dynamic5QIDescriptor_t *)calloc(1, sizeof(F1AP_Dynamic5QIDescriptor_t));
/* qoSPriorityLevel */
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI->qoSPriorityLevel = 1L;
DRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI->qoSPriorityLevel = 1L;
/* packetDelayBudget */
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI->packetDelayBudget = 1L;
DRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI->packetDelayBudget = 1L;
/* packetErrorRate */
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI->packetErrorRate = 1L;
DRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI->packetErrorRate.pER_Scalar = 1L;
DRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI->packetErrorRate.pER_Exponent = 6L;
/* OPTIONAL */
/* delayCritical */
if (0) {
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI->delayCritical = (long *)calloc(1, sizeof(long));
*drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI->delayCritical = 1L;
DRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI->delayCritical = (long *)calloc(1, sizeof(long));
*DRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI->delayCritical = 1L;
}
/* OPTIONAL */
/* averagingWindow */
if (0) {
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI->averagingWindow = (F1AP_AveragingWindow_t *)calloc(1, sizeof(F1AP_AveragingWindow_t));
*drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI->averagingWindow = 1L;
DRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI->averagingWindow = (F1AP_AveragingWindow_t *)calloc(1, sizeof(F1AP_AveragingWindow_t));
*DRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI->averagingWindow = 1L;
}
/* OPTIONAL */
/* maxDataBurstVolume */
if (0) {
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI->maxDataBurstVolume = (F1AP_MaxDataBurstVolume_t *)calloc(1, sizeof(F1AP_MaxDataBurstVolume_t));
*drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI->maxDataBurstVolume = 1L;
DRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI->maxDataBurstVolume = (F1AP_MaxDataBurstVolume_t *)calloc(1, sizeof(F1AP_MaxDataBurstVolume_t));
*DRB_Information->dRB_QoS.qoS_Characteristics.choice.dynamic_5QI->maxDataBurstVolume = 1L;
}
} // if some_decide_qoS_characteristics
......@@ -456,32 +467,32 @@ int CU_send_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
/* nGRANallocationRetentionPriority */
{
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.nGRANallocationRetentionPriority.priorityLevel = F1AP_PriorityLevel_highest; // enum
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.nGRANallocationRetentionPriority.pre_emptionCapability = F1AP_Pre_emptionCapability_shall_not_trigger_pre_emption; // enum
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.nGRANallocationRetentionPriority.pre_emptionVulnerability = F1AP_Pre_emptionVulnerability_not_pre_emptable; // enum
DRB_Information->dRB_QoS.nGRANallocationRetentionPriority.priorityLevel = F1AP_PriorityLevel_highest; // enum
DRB_Information->dRB_QoS.nGRANallocationRetentionPriority.pre_emptionCapability = F1AP_Pre_emptionCapability_shall_not_trigger_pre_emption; // enum
DRB_Information->dRB_QoS.nGRANallocationRetentionPriority.pre_emptionVulnerability = F1AP_Pre_emptionVulnerability_not_pre_emptable; // enum
} // nGRANallocationRetentionPriority
/* OPTIONAL */
/* gBR_QoS_Flow_Information */
if (0) {
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.gBR_QoS_Flow_Information = (F1AP_GBR_QoSFlowInformation_t *)calloc(1, sizeof(F1AP_GBR_QoSFlowInformation_t));
asn_long2INTEGER(&drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.gBR_QoS_Flow_Information->maxFlowBitRateDownlink, 1L);
asn_long2INTEGER(&drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.gBR_QoS_Flow_Information->maxFlowBitRateUplink, 1L);
asn_long2INTEGER(&drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.gBR_QoS_Flow_Information->guaranteedFlowBitRateDownlink, 1L);
asn_long2INTEGER(&drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.gBR_QoS_Flow_Information->guaranteedFlowBitRateUplink, 1L);
DRB_Information->dRB_QoS.gBR_QoS_Flow_Information = (F1AP_GBR_QoSFlowInformation_t *)calloc(1, sizeof(F1AP_GBR_QoSFlowInformation_t));
asn_long2INTEGER(&DRB_Information->dRB_QoS.gBR_QoS_Flow_Information->maxFlowBitRateDownlink, 1L);
asn_long2INTEGER(&DRB_Information->dRB_QoS.gBR_QoS_Flow_Information->maxFlowBitRateUplink, 1L);
asn_long2INTEGER(&DRB_Information->dRB_QoS.gBR_QoS_Flow_Information->guaranteedFlowBitRateDownlink, 1L);
asn_long2INTEGER(&DRB_Information->dRB_QoS.gBR_QoS_Flow_Information->guaranteedFlowBitRateUplink, 1L);
/* OPTIONAL */
/* maxPacketLossRateDownlink */
if (0) {
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.gBR_QoS_Flow_Information->maxPacketLossRateDownlink = (F1AP_MaxPacketLossRate_t *)calloc(1, sizeof(F1AP_MaxPacketLossRate_t));
*drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.gBR_QoS_Flow_Information->maxPacketLossRateDownlink = 1L;
DRB_Information->dRB_QoS.gBR_QoS_Flow_Information->maxPacketLossRateDownlink = (F1AP_MaxPacketLossRate_t *)calloc(1, sizeof(F1AP_MaxPacketLossRate_t));
*DRB_Information->dRB_QoS.gBR_QoS_Flow_Information->maxPacketLossRateDownlink = 1L;
}
/* OPTIONAL */
/* maxPacketLossRateUplink */
if (0) {
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.gBR_QoS_Flow_Information->maxPacketLossRateUplink = (F1AP_MaxPacketLossRate_t *)calloc(1, sizeof(F1AP_MaxPacketLossRate_t));
*drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.gBR_QoS_Flow_Information->maxPacketLossRateUplink = 1L;
DRB_Information->dRB_QoS.gBR_QoS_Flow_Information->maxPacketLossRateUplink = (F1AP_MaxPacketLossRate_t *)calloc(1, sizeof(F1AP_MaxPacketLossRate_t));
*DRB_Information->dRB_QoS.gBR_QoS_Flow_Information->maxPacketLossRateUplink = 1L;
}
}
......@@ -489,8 +500,8 @@ int CU_send_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
/* OPTIONAL */
/* reflective_QoS_Attribute */
if (0) {
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.reflective_QoS_Attribute = (long *)calloc(1, sizeof(long));
*drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->dRB_QoS.reflective_QoS_Attribute = 1L;
DRB_Information->dRB_QoS.reflective_QoS_Attribute = (long *)calloc(1, sizeof(long));
*DRB_Information->dRB_QoS.reflective_QoS_Attribute = 1L;
}
} // dRB_QoS
......@@ -498,21 +509,21 @@ int CU_send_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
/* 12.1.2.2 sNSSAI */
{
/* sST */
OCTET_STRING_fromBuf(&drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->sNSSAI.sST, "asdsa1d32sa1d31asd31as",
OCTET_STRING_fromBuf(&DRB_Information->sNSSAI.sST, "asdsa1d32sa1d31asd31as",
strlen("asdsa1d32sa1d31asd31as"));
/* OPTIONAL */
/* sD */
if (0) {
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->sNSSAI.sD = (OCTET_STRING_t *)calloc(1, sizeof(OCTET_STRING_t));
OCTET_STRING_fromBuf(drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->sNSSAI.sD, "asdsa1d32sa1d31asd31as",
DRB_Information->sNSSAI.sD = (OCTET_STRING_t *)calloc(1, sizeof(OCTET_STRING_t));
OCTET_STRING_fromBuf(DRB_Information->sNSSAI.sD, "asdsa1d32sa1d31asd31as",
strlen("asdsa1d32sa1d31asd31as"));
}
}
/* OPTIONAL */
/* 12.1.2.3 notificationControl */
if (0) {
drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->notificationControl = (F1AP_NotificationControl_t *)calloc(1, sizeof(F1AP_NotificationControl_t));
*drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->notificationControl = F1AP_NotificationControl_active; // enum
DRB_Information->notificationControl = (F1AP_NotificationControl_t *)calloc(1, sizeof(F1AP_NotificationControl_t));
*DRB_Information->notificationControl = F1AP_NotificationControl_active; // enum
}
/* 12.1.2.4 flows_Mapped_To_DRB_List */ // BK: need verifiy
......@@ -523,7 +534,7 @@ int CU_send_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
memset((void *)&flows_mapped_to_drb_item, 0, sizeof(F1AP_Flows_Mapped_To_DRB_Item_t));
/* qoSFlowIndicator */
flows_mapped_to_drb_item.qoSFlowIndicator = 1L;
flows_mapped_to_drb_item.qoSFlowIdentifier = 1L;
/* qoSFlowLevelQoSParameters */
{
......@@ -569,8 +580,8 @@ int CU_send_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
flows_mapped_to_drb_item.qoSFlowLevelQoSParameters.qoS_Characteristics.choice.dynamic_5QI->packetDelayBudget = 1L;
/* packetErrorRate */
flows_mapped_to_drb_item.qoSFlowLevelQoSParameters.qoS_Characteristics.choice.dynamic_5QI->packetErrorRate = 1L;
flows_mapped_to_drb_item.qoSFlowLevelQoSParameters.qoS_Characteristics.choice.dynamic_5QI->packetErrorRate.pER_Scalar = 1L;
flows_mapped_to_drb_item.qoSFlowLevelQoSParameters.qoS_Characteristics.choice.dynamic_5QI->packetErrorRate.pER_Exponent = 6L;
/* OPTIONAL */
/* delayCritical */
if (0) {
......@@ -637,7 +648,7 @@ int CU_send_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
} // qoSFlowLevelQoSParameters
// BK: need check
ASN_SEQUENCE_ADD(&drbs_toBeSetup_item.qoSInformation.choice.dRB_Information->flows_Mapped_To_DRB_List.list, &flows_mapped_to_drb_item);
ASN_SEQUENCE_ADD(&DRB_Information->flows_Mapped_To_DRB_List.list, &flows_mapped_to_drb_item);
}
} // if some_decide_qos
......@@ -672,7 +683,7 @@ int CU_send_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
drbs_toBeSetup_item.rLCMode = F1AP_RLCMode_rlc_am;
break;
default:
drbs_toBeSetup_item.rLCMode = F1AP_RLCMode_rlc_um;
drbs_toBeSetup_item.rLCMode = F1AP_RLCMode_rlc_um_bidirectional;
}
/* OPTIONAL */
......@@ -716,13 +727,13 @@ int CU_send_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
ie->criticality = F1AP_Criticality_reject;
ie->value.present = F1AP_UEContextSetupRequestIEs__value_PR_RAT_FrequencyPriorityInformation;
int some_decide_rat = 1; // BK: Need Check
if (some_decide_rat) {
ie->value.choice.RAT_FrequencyPriorityInformation.present = F1AP_RAT_FrequencyPriorityInformation_PR_subscriberProfileIDforRFP;
ie->value.choice.RAT_FrequencyPriorityInformation.choice.subscriberProfileIDforRFP = 11L;
int endc = 1; // RK: Get this from somewhere ...
if (endc) {
ie->value.choice.RAT_FrequencyPriorityInformation.present = F1AP_RAT_FrequencyPriorityInformation_PR_eNDC;
ie->value.choice.RAT_FrequencyPriorityInformation.choice.eNDC = 11L;
} else {
ie->value.choice.RAT_FrequencyPriorityInformation.present = F1AP_RAT_FrequencyPriorityInformation_PR_rAT_FrequencySelectionPriority;
ie->value.choice.RAT_FrequencyPriorityInformation.choice.rAT_FrequencySelectionPriority = 11L;
ie->value.choice.RAT_FrequencyPriorityInformation.present = F1AP_RAT_FrequencyPriorityInformation_PR_nGRAN;
ie->value.choice.RAT_FrequencyPriorityInformation.choice.nGRAN = 11L;
}
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
}
......@@ -1070,7 +1081,7 @@ int CU_send_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance) {
/* mandatory */
/* c4. ServCellIndex */
ie = (F1AP_UEContextModificationRequestIEs_t *)calloc(1, sizeof(F1AP_UEContextModificationRequestIEs_t));
ie->id = F1AP_ProtocolIE_ID_id_ServCellndex;
ie->id = F1AP_ProtocolIE_ID_id_ServCellIndex;
ie->criticality = F1AP_Criticality_reject;
ie->value.present = F1AP_UEContextModificationRequestIEs__value_PR_ServCellIndex;
ie->value.choice.ServCellIndex = 5L;
......@@ -1114,13 +1125,13 @@ int CU_send_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance) {
}
/* optional */
/* c6. TransmissionStopIndicator */
/* c6. TransmissionActionIndicator */
if (1) {
ie = (F1AP_UEContextModificationRequestIEs_t *)calloc(1, sizeof(F1AP_UEContextModificationRequestIEs_t));
ie->id = F1AP_ProtocolIE_ID_id_TransmissionStopIndicator;
ie->id = F1AP_ProtocolIE_ID_id_TransmissionActionIndicator;
ie->criticality = F1AP_Criticality_ignore;
ie->value.present = F1AP_UEContextModificationRequestIEs__value_PR_TransmissionStopIndicator;
ie->value.choice.TransmissionStopIndicator = F1AP_TransmissionStopIndicator_true;
ie->value.present = F1AP_UEContextModificationRequestIEs__value_PR_TransmissionActionIndicator;
ie->value.choice.TransmissionActionIndicator = F1AP_TransmissionActionIndicator_stop;
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
}
......@@ -1140,10 +1151,10 @@ int CU_send_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance) {
/* c7. RRCRconfigurationCompleteIndicator */
if (1) {
ie = (F1AP_UEContextModificationRequestIEs_t *)calloc(1, sizeof(F1AP_UEContextModificationRequestIEs_t));
ie->id = F1AP_ProtocolIE_ID_id_RRCRconfigurationCompleteIndicator;
ie->id = F1AP_ProtocolIE_ID_id_RRCReconfigurationCompleteIndicator;
ie->criticality = F1AP_Criticality_ignore;
ie->value.present = F1AP_UEContextModificationRequestIEs__value_PR_RRCRconfigurationCompleteIndicator;
ie->value.choice.RRCRconfigurationCompleteIndicator = F1AP_RRCRconfigurationCompleteIndicator_true;
ie->value.present = F1AP_UEContextModificationRequestIEs__value_PR_RRCReconfigurationCompleteIndicator;
ie->value.choice.RRCReconfigurationCompleteIndicator = F1AP_RRCReconfigurationCompleteIndicator_true;
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
}
......@@ -1325,7 +1336,7 @@ int CU_send_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance) {
}
/* rLCMode */
drbs_toBeSetupMod_item.rLCMode = F1AP_RLCMode_rlc_um; // enum
drbs_toBeSetupMod_item.rLCMode = F1AP_RLCMode_rlc_um_bidirectional; // enum
/* OPTIONAL */
/* ULConfiguration */
......@@ -1366,9 +1377,10 @@ int CU_send_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance) {
drbs_toBeModified_item.dRBID = 30L;
/* qoSInformation */
drbs_toBeModified_item.qoSInformation.present = F1AP_QoSInformation_PR_eUTRANQoS;
drbs_toBeModified_item.qoSInformation.choice.eUTRANQoS = (F1AP_EUTRANQoS_t *)calloc(1, sizeof(F1AP_EUTRANQoS_t));
drbs_toBeModified_item.qoSInformation.choice.eUTRANQoS->qCI = 254L;
drbs_toBeModified_item.qoSInformation =calloc(1,sizeof(*drbs_toBeModified_item.qoSInformation));
drbs_toBeModified_item.qoSInformation->present = F1AP_QoSInformation_PR_eUTRANQoS;
drbs_toBeModified_item.qoSInformation->choice.eUTRANQoS = (F1AP_EUTRANQoS_t *)calloc(1, sizeof(F1AP_EUTRANQoS_t));
drbs_toBeModified_item.qoSInformation->choice.eUTRANQoS->qCI = 254L;
/* ULTunnels_ToBeModified_List */
int j = 0;
......
......@@ -95,7 +95,6 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance) {
uint8_t *buffer;
uint32_t len;
int i = 0;
int j = 0;
/* Create */
/* 0. pdu Type */
......@@ -189,7 +188,7 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance) {
served_cell_information.nRPCI = f1ap_du_data->nr_pci[i]; // int 0..1007
/* - fiveGS_TAC */
OCTET_STRING_fromBuf(&served_cell_information.fiveGS_TAC,
OCTET_STRING_fromBuf(served_cell_information.fiveGS_TAC,
(const char*)&f1ap_du_data->tac[i],
3);
......@@ -201,19 +200,11 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance) {
2);
}
/* - broadcast PLMNs */
// RK: add the num_available_broadcast_PLMNs to the message
int num_available_broadcast_PLMNs = 1; //f1ap_du_data->num_available_broadcast_PLMNs;
LOG_D(F1AP, "num_available_broadcast_PLMNs = %d \n", num_available_broadcast_PLMNs);
for (j=0;
j<num_available_broadcast_PLMNs; // num_available_broadcast_PLMNs
j++) {
/* > PLMN BroadcastPLMNs Item */
F1AP_BroadcastPLMNs_Item_t *broadcastPLMNs_Item = (F1AP_BroadcastPLMNs_Item_t *)calloc(1, sizeof(F1AP_BroadcastPLMNs_Item_t));
//MCC_MNC_TO_PLMNID(208, 95, 2, &broadcastPLMNs_Item->pLMN_Identity);
MCC_MNC_TO_PLMNID(f1ap_du_data->mcc[i], f1ap_du_data->mnc[i], f1ap_du_data->mnc_digit_length[i], &broadcastPLMNs_Item->pLMN_Identity);
ASN_SEQUENCE_ADD(&served_cell_information.servedPLMNs.list, broadcastPLMNs_Item);
}
/* servedPLMN information */
F1AP_ServedPLMNs_Item_t *servedPLMN_item = calloc(1,sizeof(*servedPLMN_item));
memset(servedPLMN_item,0,sizeof(*servedPLMN_item));
MCC_MNC_TO_PLMNID(f1ap_du_data->mcc[i], f1ap_du_data->mnc[i], f1ap_du_data->mnc_digit_length[i], &servedPLMN_item->pLMN_Identity);
ASN_SEQUENCE_ADD(&served_cell_information.servedPLMNs.list, servedPLMN_item);
// // /* - CHOICE NR-MODE-Info */
F1AP_NR_Mode_Info_t nR_Mode_Info;
......@@ -503,27 +494,59 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
F1AP_SETUP_RESP (msg_p).nr_cellid[i]);
F1AP_SETUP_RESP (msg_p).nrpci[i] = *cell->nRPCI;
F1AP_ProtocolExtensionContainer_160P9_t *ext = (F1AP_ProtocolExtensionContainer_160P9_t *)cell->iE_Extensions;
AssertFatal(ext!=NULL,"Extension for SI is null\n");
F1AP_SETUP_RESP (msg_p).num_SI[i] = ext->list.count;
AssertFatal(ext->list.count==1,"At least one SI message should be there, and only 1 for now!\n");
LOG_D(F1AP, "F1AP: F1Setup-Resp Cell %d MCC %d MNC %d NRCellid %lx num_si %d\n",
i, F1AP_SETUP_RESP (msg_p).mcc[i], F1AP_SETUP_RESP (msg_p).mnc[i],
F1AP_SETUP_RESP (msg_p).nr_cellid[i], F1AP_SETUP_RESP (msg_p).num_SI[i]);
for (int si =0;si < ext->list.count;si++) {
size_t size = ext->list.array[si]->extensionValue.choice.GNB_CUSystemInformation.sImessage.size;
F1AP_SETUP_RESP (msg_p).SI_container_length[i][si] = size;
LOG_D(F1AP, "F1AP: F1Setup-Resp SI_container_length[%d][%d] %ld bytes\n", i, si, size);
F1AP_SETUP_RESP (msg_p).SI_container[i][si] = malloc(F1AP_SETUP_RESP (msg_p).SI_container_length[i][si]);
memcpy((void*)F1AP_SETUP_RESP (msg_p).SI_container[i][si],
(void*)ext->list.array[si]->extensionValue.choice.GNB_CUSystemInformation.sImessage.buf,
F1AP_SETUP_RESP (msg_p).SI_container_length[i][si]);
}
}
break;
}
}
F1AP_ProtocolExtensionContainer_154P112_t *ext = (F1AP_ProtocolExtensionContainer_154P112_t *)cell->iE_Extensions;
AssertFatal(ext!=NULL,"Extension is null\n");
for (int cnt=0;cnt<ext->list.count;cnt++) {
F1AP_Cells_to_be_Activated_List_ItemExtIEs_t *cells_to_be_activated_list_itemExtIEs=(F1AP_Cells_to_be_Activated_List_ItemExtIEs_t *)ext->list.array[cnt];
switch (cells_to_be_activated_list_itemExtIEs->id) {
/*
case F1AP_Cells_to_be_Activated_List_ItemExtIEs__extensionValue_PR_NOTHING:
case F1AP_Cells_to_be_Activated_List_ItemExtIEs__extensionValue_PR_GNB_CUSystemInformation,
case F1AP_Cells_to_be_Activated_List_ItemExtIEs__extensionValue_PR_AvailablePLMNList,
case F1AP_Cells_to_be_Activated_List_ItemExtIEs__extensionValue_PR_ExtendedAvailablePLMN_List,
case F1AP_Cells_to_be_Activated_List_ItemExtIEs__extensionValue_PR_IAB_Info_IAB_donor_CU,
case F1AP_Cells_to_be_Activated_List_ItemExtIEs__extensionValue_PR_AvailableSNPN_ID_List
*/
case F1AP_ProtocolIE_ID_id_gNB_CUSystemInformation:
{
F1AP_GNB_CUSystemInformation_t *gNB_CUSystemInformation = (F1AP_GNB_CUSystemInformation_t*)&cells_to_be_activated_list_itemExtIEs->extensionValue.choice.GNB_CUSystemInformation;
F1AP_SETUP_RESP (msg_p).num_SI[i] = gNB_CUSystemInformation->sibtypetobeupdatedlist.list.count;
AssertFatal(ext->list.count==1,"At least one SI message should be there, and only 1 for now!\n");
LOG_D(F1AP, "F1AP: F1Setup-Resp Cell %d MCC %d MNC %d NRCellid %lx num_si %d\n",
i, F1AP_SETUP_RESP (msg_p).mcc[i], F1AP_SETUP_RESP (msg_p).mnc[i],
F1AP_SETUP_RESP (msg_p).nr_cellid[i], F1AP_SETUP_RESP (msg_p).num_SI[i]);
for (int si =0;si < gNB_CUSystemInformation->sibtypetobeupdatedlist.list.count;si++) {
F1AP_SibtypetobeupdatedListItem_t *sib_item = gNB_CUSystemInformation->sibtypetobeupdatedlist.list.array[si];
size_t size = sib_item->sIBmessage.size;
F1AP_SETUP_RESP (msg_p).SI_container_length[i][si] = size;
LOG_D(F1AP, "F1AP: F1Setup-Resp SI_container_length[%d][%d] %ld bytes\n", i, (int)sib_item->sIBtype, size);
F1AP_SETUP_RESP (msg_p).SI_container[i][si] = malloc(F1AP_SETUP_RESP (msg_p).SI_container_length[i][si]);
memcpy((void*)F1AP_SETUP_RESP (msg_p).SI_container[i][sib_item->sIBtype],
(void*)sib_item->sIBmessage.buf,
size);
}
}
break;
case F1AP_ProtocolIE_ID_id_AvailablePLMNList:
AssertFatal(1==0,"F1AP_ProtocolIE_ID_id_AvailablePLMNList not supported yet\n");
break;
case F1AP_ProtocolIE_ID_id_ExtendedAvailablePLMN_List:
AssertFatal(1==0,"F1AP_ProtocolIE_ID_id_AvailablePLMNList not supported yet\n");
break;
case F1AP_ProtocolIE_ID_id_IAB_Info_IAB_donor_CU:
AssertFatal(1==0,"F1AP_ProtocolIE_ID_id_AvailablePLMNList not supported yet\n");
break;
case F1AP_ProtocolIE_ID_id_AvailableSNPN_ID_List:
AssertFatal(1==0,"F1AP_ProtocolIE_ID_id_AvailablePLMNList not supported yet\n");
break;
default:
AssertFatal(1==0,"F1AP_ProtocolIE_ID_id %d unknown\n",(int)cells_to_be_activated_list_itemExtIEs->id);
break;
}
} // for (cnt=...
} // for (cells_to_activate...
} // switch ie
} // for IE
AssertFatal(TransactionId!=-1,"TransactionId was not sent\n");
AssertFatal(num_cells_to_activate>0,"No cells activated\n");
F1AP_SETUP_RESP (msg_p).num_cells_to_activate = num_cells_to_activate;
......@@ -635,7 +658,7 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance,
served_cell_information.nRPCI = f1ap_setup_req->nr_pci[i]; // int 0..1007
/* - fiveGS_TAC */
OCTET_STRING_fromBuf(&served_cell_information.fiveGS_TAC,
OCTET_STRING_fromBuf(served_cell_information.fiveGS_TAC,
(const char *) &f1ap_setup_req->tac[i],
3);
......@@ -647,17 +670,11 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance,
2);
}
/* - broadcast PLMNs */
int maxnoofBPLMNS = 1;
for (i=0;
i<maxnoofBPLMNS;
i++) {
/* > PLMN BroadcastPLMNs Item */
F1AP_BroadcastPLMNs_Item_t *broadcastPLMNs_Item = (F1AP_BroadcastPLMNs_Item_t *)calloc(1, sizeof(F1AP_BroadcastPLMNs_Item_t));
//memset((void *)&broadcastPLMNs_Item, 0, sizeof(F1AP_BroadcastPLMNs_Item_t));
MCC_MNC_TO_PLMNID(f1ap_setup_req->mcc[i], f1ap_setup_req->mnc[i], f1ap_setup_req->mnc_digit_length[i], &broadcastPLMNs_Item->pLMN_Identity);
ASN_SEQUENCE_ADD(&served_cell_information.servedPLMNs.list, broadcastPLMNs_Item);
}
F1AP_ServedPLMNs_Item_t *servedPLMN_item = calloc(1,sizeof(*servedPLMN_item));
memset(servedPLMN_item,0,sizeof(*servedPLMN_item));
MCC_MNC_TO_PLMNID(f1ap_du_data->mcc[i], f1ap_du_data->mnc[i], f1ap_du_data->mnc_digit_length[i], &servedPLMN_item->pLMN_Identity);
ASN_SEQUENCE_ADD(&served_cell_information.servedPLMNs.list, servedPLMN_item);
// // /* - CHOICE NR-MODE-Info */
F1AP_NR_Mode_Info_t nR_Mode_Info;
......@@ -803,7 +820,7 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance,
served_cell_information.nRPCI = f1ap_setup_req->nr_pci[i]; // int 0..1007
/* - fiveGS_TAC */
OCTET_STRING_fromBuf(&served_cell_information.fiveGS_TAC,
OCTET_STRING_fromBuf(served_cell_information.fiveGS_TAC,
(const char *) &f1ap_setup_req->tac[i],
3);
......@@ -815,17 +832,12 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance,
2);
}
/* - broadcast PLMNs */
int maxnoofBPLMNS = 1;
for (i=0;
i<maxnoofBPLMNS;
i++) {
/* > PLMN BroadcastPLMNs Item */
F1AP_BroadcastPLMNs_Item_t *broadcastPLMNs_Item = (F1AP_BroadcastPLMNs_Item_t *)calloc(1, sizeof(F1AP_BroadcastPLMNs_Item_t));
//memset((void *)&broadcastPLMNs_Item, 0, sizeof(F1AP_BroadcastPLMNs_Item_t));
MCC_MNC_TO_PLMNID(f1ap_setup_req->mcc[i], f1ap_setup_req->mnc[i], f1ap_setup_req->mnc_digit_length[i], &broadcastPLMNs_Item->pLMN_Identity);
ASN_SEQUENCE_ADD(&served_cell_information.servedPLMNs.list, broadcastPLMNs_Item);
}
F1AP_ServedPLMNs_Item_t *servedPLMN_item = calloc(1,sizeof(*servedPLMN_item));
memset(servedPLMN_item,0,sizeof(*servedPLMN_item));
MCC_MNC_TO_PLMNID(f1ap_du_data->mcc[i], f1ap_du_data->mnc[i], f1ap_du_data->mnc_digit_length[i], &servedPLMN_item->pLMN_Identity);
ASN_SEQUENCE_ADD(&served_cell_information.servedPLMNs.list, servedPLMN_item);
// // /* - CHOICE NR-MODE-Info */
F1AP_NR_Mode_Info_t nR_Mode_Info;
......@@ -963,42 +975,6 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance,
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
/* mandatory */
/* c5. Active_Cells_List */
ie = (F1AP_GNBDUConfigurationUpdateIEs_t *)calloc(1, sizeof(F1AP_GNBDUConfigurationUpdateIEs_t));
ie->id = F1AP_ProtocolIE_ID_id_Active_Cells_List;
ie->criticality = F1AP_Criticality_reject;
ie->value.present = F1AP_GNBDUConfigurationUpdateIEs__value_PR_Active_Cells_List;
for (i=0;
i<1;
i++) {
//
F1AP_Active_Cells_ItemIEs_t *active_cells_item_ies;
active_cells_item_ies = (F1AP_Active_Cells_ItemIEs_t *)calloc(1, sizeof(F1AP_Active_Cells_ItemIEs_t));
active_cells_item_ies->id = F1AP_ProtocolIE_ID_id_Active_Cells_Item;
active_cells_item_ies->criticality = F1AP_Criticality_reject;
active_cells_item_ies->value.present = F1AP_Active_Cells_ItemIEs__value_PR_Active_Cells_Item;
F1AP_Active_Cells_Item_t active_cells_item;
memset((void *)&active_cells_item, 0, sizeof(F1AP_Active_Cells_Item_t));
/* 3.1 oldNRCGI */
F1AP_NRCGI_t nRCGI;
memset(&nRCGI, 0, sizeof(F1AP_NRCGI_t));
MCC_MNC_TO_PLMNID(f1ap_setup_req->mcc[i], f1ap_setup_req->mnc[i], f1ap_setup_req->mnc_digit_length[i],
&nRCGI.pLMN_Identity);
NR_CELL_ID_TO_BIT_STRING(f1ap_setup_req->nr_cellid[i], &nRCGI.nRCellIdentity);
active_cells_item.nRCGI = nRCGI;
/* ADD */
active_cells_item_ies->value.choice.Active_Cells_Item = active_cells_item;
ASN_SEQUENCE_ADD(&ie->value.choice.Active_Cells_List.list,
active_cells_item_ies);
}
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
if (f1ap_encode_pdu(&pdu, &buffer, &len) < 0) {
LOG_E(F1AP, "Failed to encode F1 setup request\n");
......
......@@ -161,10 +161,10 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
F1AP_ProtocolIE_ID_id_RAT_FrequencyPriorityInformation, true);
switch(ie->value.choice.RAT_FrequencyPriorityInformation.present) {
case F1AP_RAT_FrequencyPriorityInformation_PR_subscriberProfileIDforRFP:
case F1AP_RAT_FrequencyPriorityInformation_PR_eNDC:
//subscriberProfileIDforRFP = ie->value.choice.RAT_FrequencyPriorityInformation.choice.subscriberProfileIDforRFP;
break;
case F1AP_RAT_FrequencyPriorityInformation_PR_rAT_FrequencySelectionPriority:
case F1AP_RAT_FrequencyPriorityInformation_PR_nGRAN:
//rAT_FrequencySelectionPriority = ie->value.choice.RAT_FrequencyPriorityInformation.choice.rAT_FrequencySelectionPriority;
break;
default:
......@@ -836,7 +836,7 @@ int DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(module_id_t module_idP,
ie->id = F1AP_ProtocolIE_ID_id_C_RNTI;
ie->criticality = F1AP_Criticality_reject;
ie->value.present = F1AP_InitialULRRCMessageTransferIEs__value_PR_C_RNTI;
C_RNTI_TO_BIT_STRING(rntiP, &ie->value.choice.C_RNTI);
ie->value.choice.C_RNTI=rntiP;
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
/* mandatory */
......
......@@ -91,7 +91,7 @@ int DU_handle_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
BIT_STRING_TO_NR_CELL_IDENTITY(&ie->value.choice.NRCGI.nRCellIdentity, f1ap_ue_context_setup_req->nr_cellid);
/* ServCellIndex */
F1AP_FIND_PROTOCOLIE_BY_ID(F1AP_UEContextSetupRequestIEs_t, ie, container,
F1AP_ProtocolIE_ID_id_ServCellndex, true);
F1AP_ProtocolIE_ID_id_ServCellIndex, true);
f1ap_ue_context_setup_req->servCellIndex = ie->value.choice.ServCellIndex;
/* optional */
/* CellULConfigured */
......@@ -227,7 +227,8 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance) {
ie->id = F1AP_ProtocolIE_ID_id_C_RNTI;
ie->criticality = F1AP_Criticality_ignore;
ie->value.present = F1AP_UEContextSetupResponseIEs__value_PR_C_RNTI;
C_RNTI_TO_BIT_STRING(rntiP, &ie->value.choice.C_RNTI);
//C_RNTI_TO_BIT_STRING(rntiP, &ie->value.choice.C_RNTI);
ie->value.choice.C_RNTI=rntiP;
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
}
......@@ -1016,7 +1017,7 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance) {
srbs_failedToBeSetupMod_item.sRBID = 50L;
srbs_failedToBeSetupMod_item.cause = (F1AP_Cause_t *)calloc(1, sizeof(F1AP_Cause_t));
srbs_failedToBeSetupMod_item.cause->present = F1AP_Cause_PR_radioNetwork;
srbs_failedToBeSetupMod_item.cause->choice.radioNetwork = F1AP_CauseRadioNetwork_unknown_or_already_allocated_gnd_du_ue_f1ap_id;
srbs_failedToBeSetupMod_item.cause->choice.radioNetwork = F1AP_CauseRadioNetwork_unknown_or_already_allocated_gnb_du_ue_f1ap_id;
/* ADD */
srbs_failedToBeSetupMod_item_ies->value.choice.SRBs_FailedToBeSetupMod_Item = srbs_failedToBeSetupMod_item;
ASN_SEQUENCE_ADD(&ie->value.choice.SRBs_FailedToBeSetupMod_List.list,
......@@ -1047,7 +1048,7 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance) {
drbs_failedToBeSetupMod_item.dRBID = 30L;
drbs_failedToBeSetupMod_item.cause = (F1AP_Cause_t *)calloc(1, sizeof(F1AP_Cause_t));
drbs_failedToBeSetupMod_item.cause->present = F1AP_Cause_PR_radioNetwork;
drbs_failedToBeSetupMod_item.cause->choice.radioNetwork = F1AP_CauseRadioNetwork_unknown_or_already_allocated_gnd_du_ue_f1ap_id;
drbs_failedToBeSetupMod_item.cause->choice.radioNetwork = F1AP_CauseRadioNetwork_unknown_or_already_allocated_gnb_du_ue_f1ap_id;
/* ADD */
drbs_failedToBeSetupMod_item_ies->value.choice.DRBs_FailedToBeSetupMod_Item = drbs_failedToBeSetupMod_item;
ASN_SEQUENCE_ADD(&ie->value.choice.DRBs_FailedToBeSetupMod_List.list,
......@@ -1083,7 +1084,7 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance) {
scell_failedtoSetupMod_item.sCell_ID = nRCGI;
scell_failedtoSetupMod_item.cause = (F1AP_Cause_t *)calloc(1, sizeof(F1AP_Cause_t));
scell_failedtoSetupMod_item.cause->present = F1AP_Cause_PR_radioNetwork;
scell_failedtoSetupMod_item.cause->choice.radioNetwork = F1AP_CauseRadioNetwork_unknown_or_already_allocated_gnd_du_ue_f1ap_id;
scell_failedtoSetupMod_item.cause->choice.radioNetwork = F1AP_CauseRadioNetwork_unknown_or_already_allocated_gnb_du_ue_f1ap_id;
/* ADD */
scell_failedtoSetupMod_item_ies->value.choice.SCell_FailedtoSetupMod_Item = scell_failedtoSetupMod_item;
ASN_SEQUENCE_ADD(&ie->value.choice.SCell_FailedtoSetupMod_List.list,
......@@ -1114,7 +1115,7 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance) {
drbs_failedToBeModified_item.dRBID = 30L;
drbs_failedToBeModified_item.cause = (F1AP_Cause_t *)calloc(1, sizeof(F1AP_Cause_t));
drbs_failedToBeModified_item.cause->present = F1AP_Cause_PR_radioNetwork;
drbs_failedToBeModified_item.cause->choice.radioNetwork = F1AP_CauseRadioNetwork_unknown_or_already_allocated_gnd_du_ue_f1ap_id;
drbs_failedToBeModified_item.cause->choice.radioNetwork = F1AP_CauseRadioNetwork_unknown_or_already_allocated_gnb_du_ue_f1ap_id;
/* ADD */
drbs_failedToBeModified_item_ies->value.choice.DRBs_FailedToBeModified_Item = drbs_failedToBeModified_item;
ASN_SEQUENCE_ADD(&ie->value.choice.DRBs_FailedToBeModified_List.list,
......
......@@ -1055,7 +1055,7 @@ void release_UE_in_freeList(module_id_t mod_id) {
if (id>=0) clean_eNb_dlsch(eNB_PHY->dlsch[id][0]);
// clean UCI entries for rnti
for (i=0; i<NUMBER_OF_UCI_VARS_MAX; i++) {
for (i=0; i<NUMBER_OF_UCI_MAX; i++) {
if(eNB_PHY->uci_vars[i].rnti == rnti) {
LOG_I(MAC, "clean eNb uci_vars[%d] UE %x \n",i, rnti);
memset(&eNB_PHY->uci_vars[i],0,sizeof(LTE_eNB_UCI));
......@@ -1089,7 +1089,7 @@ void release_UE_in_freeList(module_id_t mod_id) {
clean_eNb_ulsch(ulsch);
}
for (i=0; i<NUMBER_OF_UCI_VARS_MAX; i++) {
for (i=0; i<NUMBER_OF_UCI_MAX; i++) {
if(eNB_PHY->uci_vars[i].rnti == rnti) {
LOG_I(MAC, "clean eNb uci_vars[%d] UE %x \n",i, rnti);
memset(&eNB_PHY->uci_vars[i],0,sizeof(LTE_eNB_UCI));
......
......@@ -26,7 +26,7 @@
#include "ProtocolDiscriminator.h"
#include "SecurityHeaderType.h"
#include "MessageType.h"
#include "PagingIdentity.h"
#include "NasPagingIdentity.h"
#include "Cli.h"
#include "SsCode.h"
#include "LcsIndicator.h"
......
......@@ -6,23 +6,41 @@
# define NUMBER_OF_gNB_MAX 1
# define NUMBER_OF_RU_MAX 2
# define NUMBER_OF_NR_RU_MAX 2
# define NUMBER_OF_UCI_MAX 16
# define NUMBER_OF_ULSCH_MAX 16
# define NUMBER_OF_DLSCH_MAX 16
# define NUMBER_OF_SRS_MAX 16
# define NUMBER_OF_NR_ULSCH_MAX 16
# define NUMBER_OF_NR_DLSCH_MAX 16
# define NUMBER_OF_NR_UCI_MAX 16
# define nUMBER_OF_NR_SRS_MAX 16
# define NUMBER_OF_DLSCH_MAX 16
# define NUMBER_OF_ULSCH_MAX 16
# define NUMBER_OF_SCH_STATS_MAX 16
# define NUMBER_OF_NR_SCH_STATS_MAX 16
# define NUMBER_OF_NR_PUCCH_MAX 16
# define NUMBER_OF_NR_SR_MAX 16
# define NUMBER_OF_NR_PDCCH_MAX 16
#define MAX_MANAGED_ENB_PER_MOBILE 2
#define MAX_MANAGED_GNB_PER_MOBILE 2
# ifndef PHYSIM
# ifndef UE_EXPANSION
# define NUMBER_OF_UE_MAX 4
# define NUMBER_OF_NR_UE_MAX 4
# define NUMBER_OF_UCI_VARS_MAX 14
# define NUMBER_OF_CONNECTED_eNB_MAX 1
# define NUMBER_OF_CONNECTED_gNB_MAX 1
# else
# define NUMBER_OF_UE_MAX 256
# define NUMBER_OF_UCI_VARS_MAX 256
# define NUMBER_OF_CONNECTED_eNB_MAX 1
# define NUMBER_OF_CONNECTED_gNB_MAX 1
# endif
# else
# define NUMBER_OF_UE_MAX 4
# define NUMBER_OF_NR_UE_MAX 4
# define NUMBER_OF_UCI_VARS_MAX 56
# define NUMBER_OF_CONNECTED_eNB_MAX 1
# define NUMBER_OF_CONNECTED_gNB_MAX 1
# endif
......
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