diff --git a/executables/nr-ue.c b/executables/nr-ue.c index ccb54f72ee..dca05ea36a 100644 --- a/executables/nr-ue.c +++ b/executables/nr-ue.c @@ -27,6 +27,7 @@ #include "PHY/INIT/nr_phy_init.h" #include "NR_MAC_UE/mac_proto.h" #include "RRC/NR_UE/rrc_proto.h" +#include "RRC/NR_UE/L2_interface_ue.h" #include "SCHED_NR_UE/phy_frame_config_nr.h" #include "SCHED_NR_UE/defs.h" #include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h" diff --git a/openair1/SIMULATION/NR_PHY/nr_dummy_functions.c b/openair1/SIMULATION/NR_PHY/nr_dummy_functions.c index 8d02ee9927..2d64de91e0 100644 --- a/openair1/SIMULATION/NR_PHY/nr_dummy_functions.c +++ b/openair1/SIMULATION/NR_PHY/nr_dummy_functions.c @@ -36,6 +36,8 @@ void nr_mac_rrc_msg3_ind(const module_id_t mod_id, int rnti, int gnb_id) {} void nr_mac_rrc_ra_ind(const module_id_t mod_id, int frame, bool success) {} +void nr_mac_rrc_inactivity_timer_ind(const module_id_t mod_id) {} + void rrc_data_ind(const protocol_ctxt_t *const ctxt_pP, const rb_id_t Srb_id, const sdu_size_t sdu_sizeP, diff --git a/openair2/COMMON/mac_messages_def.h b/openair2/COMMON/mac_messages_def.h index 661f219240..e3ef328017 100644 --- a/openair2/COMMON/mac_messages_def.h +++ b/openair2/COMMON/mac_messages_def.h @@ -50,6 +50,7 @@ MESSAGE_DEF(RRC_MAC_PCCH_DATA_REQ, MESSAGE_PRIORITY_MED_PLUS, RrcMacPcchDat MESSAGE_DEF(NR_RRC_MAC_RA_IND, MESSAGE_PRIORITY_MED_PLUS, NRRrcMacRaInd, nr_rrc_mac_ra_ind) MESSAGE_DEF(NR_RRC_MAC_MSG3_IND, MESSAGE_PRIORITY_MED_PLUS, NRRrcMacMsg3Ind, nr_rrc_mac_msg3_ind) +MESSAGE_DEF(NR_RRC_MAC_INAC_IND, MESSAGE_PRIORITY_MED_PLUS, NRRrcMacInacInd, nr_rrc_mac_inac_ind) /* RRC configures DRX context (MAC timers) of a UE */ MESSAGE_DEF(RRC_MAC_DRX_CONFIG_REQ, MESSAGE_PRIORITY_MED, rrc_mac_drx_config_req_t, rrc_mac_drx_config_req) diff --git a/openair2/COMMON/mac_messages_types.h b/openair2/COMMON/mac_messages_types.h index effdaacff3..bc9e8f6c8a 100644 --- a/openair2/COMMON/mac_messages_types.h +++ b/openair2/COMMON/mac_messages_types.h @@ -57,6 +57,7 @@ #define NR_RRC_MAC_RA_IND(mSGpTR) (mSGpTR)->ittiMsg.nr_rrc_mac_ra_ind #define NR_RRC_MAC_MSG3_IND(mSGpTR) (mSGpTR)->ittiMsg.nr_rrc_mac_msg3_ind +#define NR_RRC_MAC_INAC_IND(mSGpTR) (mSGpTR)->ittiMsg.nr_rrc_mac_inac_ind #define RRC_MAC_DRX_CONFIG_REQ(mSGpTR) (mSGpTR)->ittiMsg.rrc_mac_drx_config_req @@ -80,6 +81,10 @@ typedef struct NRRrcMacMsg3Ind_s { int gnb_id; } NRRrcMacMsg3Ind; +typedef struct NRRrcMacInacInd_s { + bool inactivity_timer_expired; // not to leave the struct empty +} NRRrcMacInacInd; + typedef struct RrcMacInSyncInd_s { uint32_t frame; uint8_t sub_frame; diff --git a/openair2/LAYER2/NR_MAC_UE/config_ue.c b/openair2/LAYER2/NR_MAC_UE/config_ue.c index 50244f2d2b..1baaba8221 100644 --- a/openair2/LAYER2/NR_MAC_UE/config_ue.c +++ b/openair2/LAYER2/NR_MAC_UE/config_ue.c @@ -1814,6 +1814,64 @@ static uint32_t nr_get_sf_periodicBSRTimer(long periodicBSR) return timer; } +static uint32_t get_data_inactivity_timer(long setup) +{ + uint32_t timer_s = 0; + switch (setup) { + case NR_DataInactivityTimer_s1 : + timer_s = 1; + break; + case NR_DataInactivityTimer_s2 : + timer_s = 2; + break; + case NR_DataInactivityTimer_s3 : + timer_s = 3; + break; + case NR_DataInactivityTimer_s5 : + timer_s = 5; + break; + case NR_DataInactivityTimer_s7 : + timer_s = 7; + break; + case NR_DataInactivityTimer_s10 : + timer_s = 10; + break; + case NR_DataInactivityTimer_s15 : + timer_s = 15; + break; + case NR_DataInactivityTimer_s20 : + timer_s = 20; + break; + case NR_DataInactivityTimer_s40 : + timer_s = 40; + break; + case NR_DataInactivityTimer_s50 : + timer_s = 50; + break; + case NR_DataInactivityTimer_s60 : + timer_s = 60; + break; + case NR_DataInactivityTimer_s80 : + timer_s = 80; + break; + case NR_DataInactivityTimer_s100 : + timer_s = 100; + break; + case NR_DataInactivityTimer_s120 : + timer_s = 120; + break; + case NR_DataInactivityTimer_s150 : + timer_s = 150; + break; + case NR_DataInactivityTimer_s180 : + timer_s = 180; + break; + default : + AssertFatal(false, "Invalid data inactivity timer\n"); + } + return timer_s; +} + static void configure_maccellgroup(NR_UE_MAC_INST_t *mac, const NR_MAC_CellGroupConfig_t *mcg) { NR_UE_SCHEDULING_INFO *si = &mac->scheduling_info; @@ -1895,6 +1953,19 @@ static void configure_maccellgroup(NR_UE_MAC_INST_t *mac, const NR_MAC_CellGroup phr_info->phr_reporting = (1 << phr_cause_phr_config); } } + + if (mcg->ext1 && mcg->ext1->dataInactivityTimer) { + struct NR_SetupRelease_DataInactivityTimer *setup_release = mcg->ext1->dataInactivityTimer; + if (setup_release->present == NR_SetupRelease_DataInactivityTimer_PR_release) + free(mac->data_inactivity_timer); + if (setup_release->present == NR_SetupRelease_DataInactivityTimer_PR_setup) { + if (!mac->data_inactivity_timer) + mac->data_inactivity_timer = calloc(1, sizeof(*mac->data_inactivity_timer)); + uint32_t timer_s = get_data_inactivity_timer(setup_release->choice.setup); // timer in seconds + int scs = mac->current_DL_BWP->scs; + nr_timer_setup(mac->data_inactivity_timer, (timer_s * 1000) << scs, 1); // 1 slot update rate + } + } } static void configure_csirs_resource(NR_NZP_CSI_RS_Resource_t *target, NR_NZP_CSI_RS_Resource_t *source) diff --git a/openair2/LAYER2/NR_MAC_UE/mac_defs.h b/openair2/LAYER2/NR_MAC_UE/mac_defs.h index bec9d84dca..c4aec8aa20 100644 --- a/openair2/LAYER2/NR_MAC_UE/mac_defs.h +++ b/openair2/LAYER2/NR_MAC_UE/mac_defs.h @@ -571,8 +571,8 @@ typedef struct NR_UE_MAC_INST_s { // order lc info A_SEQUENCE_OF(nr_lcordered_info_t) lc_ordered_list; - NR_UE_SCHEDULING_INFO scheduling_info; + NR_timer_t *data_inactivity_timer; int dmrs_TypeA_Position; int p_Max; diff --git a/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c b/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c index 73f85c9535..d2034893bc 100644 --- a/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c +++ b/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c @@ -198,6 +198,8 @@ void reset_mac_inst(NR_UE_MAC_INST_t *nr_mac) nr_mac->scheduling_info.lc_sched_info[i].Bj = 0; nr_timer_stop(&nr_mac->scheduling_info.lc_sched_info[i].Bj_timer); } + if (nr_mac->data_inactivity_timer) + nr_timer_stop(nr_mac->data_inactivity_timer); nr_timer_stop(&nr_mac->ra.contention_resolution_timer); nr_timer_stop(&nr_mac->scheduling_info.sr_DelayTimer); nr_timer_stop(&nr_mac->scheduling_info.retxBSR_Timer); @@ -249,8 +251,7 @@ void reset_mac_inst(NR_UE_MAC_INST_t *nr_mac) // TODO beam failure procedure not implemented } -void release_mac_configuration(NR_UE_MAC_INST_t *mac, - NR_UE_MAC_reset_cause_t cause) +void release_mac_configuration(NR_UE_MAC_INST_t *mac, NR_UE_MAC_reset_cause_t cause) { NR_UE_ServingCell_Info_t *sc = &mac->sc_info; // if cause is Re-establishment, release spCellConfig only diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c index 9264e4ad16..c26e8a5629 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c @@ -31,7 +31,7 @@ */ /* RRC */ -#include "RRC/NR_UE/rrc_proto.h" +#include "RRC/NR_UE/L2_interface_ue.h" /* MAC */ #include "LAYER2/NR_MAC_COMMON/nr_mac_extern.h" diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c index 59495bd2c3..36c04447f1 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c @@ -38,7 +38,7 @@ #include "executables/nr-softmodem.h" /* RRC*/ -#include "RRC/NR_UE/rrc_proto.h" +#include "RRC/NR_UE/L2_interface_ue.h" /* MAC */ #include "NR_MAC_COMMON/nr_mac.h" @@ -2957,19 +2957,22 @@ void nr_ue_send_sdu(NR_UE_MAC_INST_t *mac, nr_downlink_indication_t *dl_info, in // Processing MAC PDU // it parses MAC CEs subheaders, MAC CEs, SDU subheaderds and SDUs - switch (dl_info->rx_ind->rx_indication_body[pdu_id].pdu_type){ - case FAPI_NR_RX_PDU_TYPE_DLSCH: - nr_ue_process_mac_pdu(mac, dl_info, pdu_id); - break; - case FAPI_NR_RX_PDU_TYPE_RAR: + switch (dl_info->rx_ind->rx_indication_body[pdu_id].pdu_type) { + case FAPI_NR_RX_PDU_TYPE_DLSCH : + // start or restart dataInactivityTimer if any MAC entity receives a MAC SDU for DTCH logical channel, + // DCCH logical channel, or CCCH logical channel + if (mac->data_inactivity_timer) + nr_timer_start(mac->data_inactivity_timer); + nr_ue_process_mac_pdu(mac, dl_info, pdu_id); + break; + case FAPI_NR_RX_PDU_TYPE_RAR : nr_ue_process_rar(mac, dl_info, pdu_id); - break; + break; default: - break; + AssertFatal(false, "Invalid PDU type\n"); } VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SEND_SDU, VCD_FUNCTION_OUT); - } // #define EXTRACT_DCI_ITEM(val,size) val= readBits(dci_pdu, &pos, size); diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c index d83375cc01..c1d7238d41 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c @@ -54,6 +54,7 @@ #include "LAYER2/NR_MAC_COMMON/nr_mac_extern.h" #include "LAYER2/RLC/rlc.h" +#include "RRC/NR_UE/L2_interface_ue.h" //#define SRS_DEBUG #define verifyMutex(a) \ @@ -156,6 +157,11 @@ static void trigger_regular_bsr(NR_UE_MAC_INST_t *mac, NR_LogicalChannelIdentity void update_mac_timers(NR_UE_MAC_INST_t *mac) { + if (mac->data_inactivity_timer) { + bool inactivity_timer_expired = nr_timer_tick(mac->data_inactivity_timer); + if (inactivity_timer_expired) + nr_mac_rrc_inactivity_timer_ind(mac->ue_id); + } nr_timer_tick(&mac->ra.contention_resolution_timer); for (int j = 0; j < NR_MAX_SR_ID; j++) nr_timer_tick(&mac->scheduling_info.sr_info[j].prohibitTimer); @@ -1476,6 +1482,10 @@ void nr_ue_ul_scheduler(NR_UE_MAC_INST_t *mac, nr_uplink_indication_t *ul_info) ulcfg_pdu->pusch_config_pdu.tx_request_body.fapiTxPdu = ulsch_input_buffer; ulcfg_pdu->pusch_config_pdu.tx_request_body.pdu_length = TBS_bytes; number_of_pdus++; + // start or restart dataInactivityTimer if any MAC entity transmits a MAC SDU for DTCH logical channel, + // or DCCH logical channel + if (mac->data_inactivity_timer) + nr_timer_start(mac->data_inactivity_timer); } } diff --git a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c index 4044cfd9dc..6dc6172ef7 100644 --- a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c +++ b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c @@ -41,7 +41,7 @@ #include "NR_MAC_UE/mac_extern.h" #include "SCHED_NR_UE/fapi_nr_ue_l1.h" #include "executables/softmodem-common.h" -#include "openair2/RRC/NR_UE/rrc_proto.h" +#include "openair2/RRC/NR_UE/L2_interface_ue.h" #include "openair2/GNB_APP/L1_nr_paramdef.h" #include "openair2/GNB_APP/gnb_paramdef.h" #include "radio/ETHERNET/if_defs.h" diff --git a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h index 26502cacf1..4f85dd3a03 100644 --- a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h +++ b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h @@ -51,6 +51,17 @@ typedef enum sl_sidelink_slot_type { } sl_sidelink_slot_type_t; +extern queue_t nr_rach_ind_queue; +extern queue_t nr_rx_ind_queue; +extern queue_t nr_crc_ind_queue; +extern queue_t nr_uci_ind_queue; +extern queue_t nr_sfn_slot_queue; +extern queue_t nr_chan_param_queue; +extern queue_t nr_dl_tti_req_queue; +extern queue_t nr_tx_req_queue; +extern queue_t nr_ul_dci_req_queue; +extern queue_t nr_ul_tti_req_queue; + extern slot_rnti_mcs_s slot_rnti_mcs[NUM_NFAPI_SLOT]; typedef struct NR_UL_TIME_ALIGNMENT NR_UL_TIME_ALIGNMENT_t; diff --git a/openair2/RRC/NR_UE/L2_interface_ue.c b/openair2/RRC/NR_UE/L2_interface_ue.c index feda34be67..b2b4914c22 100644 --- a/openair2/RRC/NR_UE/L2_interface_ue.c +++ b/openair2/RRC/NR_UE/L2_interface_ue.c @@ -31,16 +31,14 @@ */ #include "rrc_defs.h" -#include "rrc_proto.h" +#include "L2_interface_ue.h" #include "assertions.h" #include "LAYER2/NR_MAC_COMMON/nr_mac.h" #include "openair2/LAYER2/NR_MAC_UE/mac_proto.h" typedef uint32_t channel_t; -void nr_mac_rrc_sync_ind(const module_id_t module_id, - const frame_t frame, - const bool in_sync) +void nr_mac_rrc_sync_ind(const module_id_t module_id, const frame_t frame, const bool in_sync) { MessageDef *message_p = itti_alloc_new_message(TASK_MAC_UE, 0, NR_RRC_MAC_SYNC_IND); NR_RRC_MAC_SYNC_IND (message_p).frame = frame; @@ -48,17 +46,17 @@ void nr_mac_rrc_sync_ind(const module_id_t module_id, itti_send_msg_to_task(TASK_RRC_NRUE, GNB_MODULE_ID_TO_INSTANCE(module_id), message_p); } -int8_t nr_mac_rrc_data_ind_ue(const module_id_t module_id, - const int CC_id, - const uint8_t gNB_index, - const frame_t frame, - const int slot, - const rnti_t rnti, - const uint32_t cellid, - const long arfcn, - const channel_t channel, - const uint8_t* pduP, - const sdu_size_t pdu_len) +void nr_mac_rrc_data_ind_ue(const module_id_t module_id, + const int CC_id, + const uint8_t gNB_index, + const frame_t frame, + const int slot, + const rnti_t rnti, + const uint32_t cellid, + const long arfcn, + const channel_t channel, + const uint8_t* pduP, + const sdu_size_t pdu_len) { sdu_size_t sdu_size = 0; @@ -121,8 +119,13 @@ int8_t nr_mac_rrc_data_ind_ue(const module_id_t module_id, default: break; } +} - return(0); +void nr_mac_rrc_inactivity_timer_ind(const module_id_t mod_id) +{ + MessageDef *message_p = itti_alloc_new_message(TASK_MAC_UE, 0, NR_RRC_MAC_INAC_IND); + NR_RRC_MAC_INAC_IND (message_p).inactivity_timer_expired = true; + itti_send_msg_to_task(TASK_RRC_NRUE, GNB_MODULE_ID_TO_INSTANCE(mod_id), message_p); } void nr_mac_rrc_msg3_ind(const module_id_t mod_id, const int rnti, int gnb_id) diff --git a/openair2/RRC/NR_UE/L2_interface_ue.h b/openair2/RRC/NR_UE/L2_interface_ue.h new file mode 100644 index 0000000000..708633b413 --- /dev/null +++ b/openair2/RRC/NR_UE/L2_interface_ue.h @@ -0,0 +1,45 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +#include "rrc_defs.h" +#include "common/utils/ocp_itti/intertask_interface.h" + +#ifndef _L2_INTERFACE_UE_H_ +#define _L2_INTERFACE_UE_H_ +void nr_mac_rrc_sync_ind(const module_id_t module_id, const frame_t frame, const bool in_sync); +void nr_mac_rrc_data_ind_ue(const module_id_t module_id, + const int CC_id, + const uint8_t gNB_index, + const frame_t frame, + const int slot, + const rnti_t rnti, + const uint32_t cellid, + const long arfcn, + const channel_t channel, + const uint8_t* pduP, + const sdu_size_t pdu_len); +void nr_mac_rrc_inactivity_timer_ind(const module_id_t mod_id); +void nr_mac_rrc_msg3_ind(const module_id_t mod_id, const int rnti, int gnb_id); +void nr_ue_rrc_timer_trigger(int instance, int frame, int gnb_id); +void nr_mac_rrc_ra_ind(const module_id_t mod_id, int frame, bool success); +void nsa_sendmsg_to_lte_ue(const void *message, size_t msg_len, Rrc_Msg_Type_t msg_type); +#endif + diff --git a/openair2/RRC/NR_UE/rrc_UE.c b/openair2/RRC/NR_UE/rrc_UE.c index cab08077ce..c254a48316 100644 --- a/openair2/RRC/NR_UE/rrc_UE.c +++ b/openair2/RRC/NR_UE/rrc_UE.c @@ -47,6 +47,7 @@ #include "rrc_defs.h" #include "rrc_proto.h" +#include "L2_interface_ue.h" #include "LAYER2/NR_MAC_UE/mac_proto.h" #include "intertask_interface.h" @@ -1750,6 +1751,12 @@ void *rrc_nrue(void *notUsed) nr_rrc_SI_timers(SInfo); break; + case NR_RRC_MAC_INAC_IND: + LOG_D(NR_RRC, "Received data inactivity indication from lower layers\n"); + NR_Release_Cause_t release_cause = RRC_CONNECTION_FAILURE; + nr_rrc_going_to_IDLE(rrc, release_cause, NULL); + break; + case NR_RRC_MAC_MSG3_IND: nr_rrc_handle_msg3_indication(rrc, NR_RRC_MAC_MSG3_IND(msg_p).rnti); break; diff --git a/openair2/RRC/NR_UE/rrc_proto.h b/openair2/RRC/NR_UE/rrc_proto.h index 739d81cb4e..95685c8e2f 100644 --- a/openair2/RRC/NR_UE/rrc_proto.h +++ b/openair2/RRC/NR_UE/rrc_proto.h @@ -39,56 +39,22 @@ #include "NR_MeasConfig.h" #include "NR_CellGroupConfig.h" #include "NR_RadioBearerConfig.h" -#include "openair2/PHY_INTERFACE/queue_t.h" #include "common/utils/ocp_itti/intertask_interface.h" -extern queue_t nr_rach_ind_queue; -extern queue_t nr_rx_ind_queue; -extern queue_t nr_crc_ind_queue; -extern queue_t nr_uci_ind_queue; -extern queue_t nr_sfn_slot_queue; -extern queue_t nr_chan_param_queue; -extern queue_t nr_dl_tti_req_queue; -extern queue_t nr_tx_req_queue; -extern queue_t nr_ul_dci_req_queue; -extern queue_t nr_ul_tti_req_queue; - NR_UE_RRC_INST_t *nr_rrc_init_ue(char* uecap_file, int nb_inst, int num_ant_tx); + void init_nsa_message (NR_UE_RRC_INST_t *rrc, char* reconfig_file, char* rbconfig_file); void process_nsa_message(NR_UE_RRC_INST_t *rrc, nsa_message_t nsa_message_type, void *message, int msg_len); void nr_rrc_cellgroup_configuration(NR_UE_RRC_INST_t *rrc, NR_CellGroupConfig_t *cellGroupConfig); -/**\brief interface between MAC and RRC thru SRB0 (RLC TM/no PDCP) - \param module_id module id - \param CC_id component carrier id - \param gNB_index gNB index - \param channel indicator for channel of the pdu - \param pduP pointer to pdu - \param pdu_len data length of pdu*/ -int8_t nr_mac_rrc_data_ind_ue(const module_id_t module_id, - const int CC_id, - const uint8_t gNB_index, - const frame_t frame, - const int slot, - const rnti_t rnti, - const uint32_t cellid, - const long arfcn, - const channel_t channel, - const uint8_t* pduP, - const sdu_size_t pdu_len); - -void nr_mac_rrc_sync_ind(const module_id_t module_id, - const frame_t frame, - const bool in_sync); - void nr_rrc_going_to_IDLE(NR_UE_RRC_INST_t *rrc, NR_Release_Cause_t release_cause, NR_RRCRelease_t *RRCRelease); + void handle_RRCRelease(NR_UE_RRC_INST_t *rrc); -void nr_mac_rrc_ra_ind(const module_id_t mod_id, int frame, bool success); -void nr_mac_rrc_msg3_ind(const module_id_t mod_id, const int rnti, int gnb_id); + void set_rlf_sib1_timers_and_constants(NR_UE_Timers_Constants_t *tac, NR_SIB1_t *sib1); /**\brief RRC UE task. @@ -104,8 +70,6 @@ void *recv_msgs_from_lte_ue(void *args_p); void init_connections_with_lte_ue(void); -void nsa_sendmsg_to_lte_ue(const void *message, size_t msg_len, Rrc_Msg_Type_t msg_type); - extern void start_oai_nrue_threads(void); int get_from_lte_ue_fd();