1111#include " rrc_reconfiguration_procedure.h"
1212#include " ../rrc_asn1_helpers.h"
1313#include " srsran/cu_cp/du_processor.h"
14+ #include " srsran/ran/cause.h"
1415
1516using namespace srsran ;
1617using namespace srsran ::srs_cu_cp;
@@ -19,12 +20,14 @@ using namespace asn1::rrc_nr;
1920rrc_reconfiguration_procedure::rrc_reconfiguration_procedure (rrc_ue_context_t & context_,
2021 const rrc_reconfiguration_procedure_request& args_,
2122 rrc_ue_reconfiguration_proc_notifier& rrc_ue_notifier_,
23+ rrc_ue_control_notifier& ngap_ctrl_notifier_,
2224 rrc_ue_event_manager& event_mng_,
2325 rrc_ue_srb_handler& srb_notifier_,
2426 rrc_ue_logger& logger_) :
2527 context(context_),
2628 args(args_),
2729 rrc_ue(rrc_ue_notifier_),
30+ ngap_ctrl_notifier(ngap_ctrl_notifier_),
2831 event_mng(event_mng_),
2932 srb_notifier(srb_notifier_),
3033 logger(logger_)
@@ -62,6 +65,7 @@ void rrc_reconfiguration_procedure::operator()(coro_context<async_task<bool>>& c
6265 procedure_result = true ;
6366 } else {
6467 logger.log_warning (" \" {}\" timed out after {}ms" , name (), context.cfg .rrc_procedure_timeout_ms );
68+ send_ue_context_release_request ();
6569 }
6670
6771 logger.log_debug (" \" {}\" finalized" , name ());
@@ -76,3 +80,10 @@ void rrc_reconfiguration_procedure::send_rrc_reconfiguration()
7680 fill_asn1_rrc_reconfiguration_msg (rrc_reconfig, transaction.id (), args);
7781 rrc_ue.on_new_dl_dcch (srb_id_t ::srb1, dl_dcch_msg);
7882}
83+
84+ void rrc_reconfiguration_procedure::send_ue_context_release_request ()
85+ {
86+ cu_cp_ue_context_release_request ue_context_release_request{
87+ context.ue_index , {}, cause_radio_network_t ::release_due_to_ngran_generated_reason};
88+ ngap_ctrl_notifier.on_ue_context_release_request (ue_context_release_request);
89+ }
0 commit comments