From 369e89ee2a58589786b52e279203374d89c63d6f Mon Sep 17 00:00:00 2001
From: Robert Schmidt <robert.schmidt@eurecom.fr>
Date: Thu, 25 Oct 2018 15:31:12 +0200
Subject: [PATCH] Create RAN API flexran_get_num_ue_lcs() [no dedicated bearers
 detection]

---
 openair2/ENB_APP/flexran_agent_ran_api.c | 14 ++++++++++++++
 openair2/ENB_APP/flexran_agent_ran_api.h |  4 ++++
 2 files changed, 18 insertions(+)

diff --git a/openair2/ENB_APP/flexran_agent_ran_api.c b/openair2/ENB_APP/flexran_agent_ran_api.c
index 7fb0d767e1..f8789e3d71 100644
--- a/openair2/ENB_APP/flexran_agent_ran_api.c
+++ b/openair2/ENB_APP/flexran_agent_ran_api.c
@@ -114,6 +114,20 @@ int flexran_get_num_ues(mid_t mod_id)
   return RC.mac[mod_id]->UE_list.num_UEs;
 }
 
+int flexran_get_num_ue_lcs(mid_t mod_id, mid_t ue_id)
+{
+  if (!mac_is_present(mod_id)) return 0;
+  // Not sure whether this is needed: if (!rrc_is_present(mod_id)) return 0;
+  const rnti_t rnti = flexran_get_ue_crnti(mod_id, ue_id);
+  const int s = mac_eNB_get_rrc_status(mod_id, rnti);
+  if (s < RRC_CONNECTED)
+    return 0;
+  else if (s == RRC_CONNECTED)
+    return 1;
+  else
+    return 3;
+}
+
 rnti_t flexran_get_ue_crnti(mid_t mod_id, mid_t ue_id)
 {
   if (!mac_is_present(mod_id)) return 0;
diff --git a/openair2/ENB_APP/flexran_agent_ran_api.h b/openair2/ENB_APP/flexran_agent_ran_api.h
index c98113a392..b0e3f941a7 100644
--- a/openair2/ENB_APP/flexran_agent_ran_api.h
+++ b/openair2/ENB_APP/flexran_agent_ran_api.h
@@ -73,6 +73,10 @@ uint16_t flexran_get_future_sfn_sf(mid_t mod_id, int ahead_of_time);
 /* Return the number of attached UEs */
 int flexran_get_num_ues(mid_t mod_id);
 
+/* Get the number of logical channels per UE. This function does not consider
+ * dedicated bearers yet */
+int flexran_get_num_ue_lcs(mid_t mod_id, mid_t ue_id);
+
 /* Get the rnti of a UE with id ue_id */
 rnti_t flexran_get_ue_crnti(mid_t mod_id, mid_t ue_id);
 
-- 
2.26.2