From 34f0bdac3ac70291d26ba1e5e2f583aff6fd4172 Mon Sep 17 00:00:00 2001
From: DUFRENE Louis Adrien TGI/OLS <SWMT1841@orange.com>
Date: Mon, 28 Oct 2019 14:44:16 +0100
Subject: [PATCH] [to build] Monolithic: move RRC features in do_drxconfig

---
 .gitignore                                   |  3 ++
 openair2/F1AP/f1ap_du_rrc_message_transfer.c |  3 +-
 openair2/RRC/LTE/MESSAGES/asn1_msg.c         | 14 +++++++
 openair2/RRC/LTE/rrc_eNB.c                   | 42 +++++---------------
 4 files changed, 29 insertions(+), 33 deletions(-)

diff --git a/.gitignore b/.gitignore
index d7126a6224f..7b227ecca80 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,6 @@ log/
 lte_build_oai/
 targets/bin/
 cmake_targets/nas_sim_tools/build/
+
+# vscode
+.vscode
\ No newline at end of file
diff --git a/openair2/F1AP/f1ap_du_rrc_message_transfer.c b/openair2/F1AP/f1ap_du_rrc_message_transfer.c
index ee8177f6422..f323c82c03a 100644
--- a/openair2/F1AP/f1ap_du_rrc_message_transfer.c
+++ b/openair2/F1AP/f1ap_du_rrc_message_transfer.c
@@ -646,8 +646,7 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t       instance,
 }
 
 int DU_send_UL_RRC_MESSAGE_TRANSFER(instance_t instance, 
-                                    const f1ap_ul_rrc_message_t *msg) 
-{
+                                    const f1ap_ul_rrc_message_t *msg) {
   const rnti_t rnti = msg->rnti;
 
   F1AP_F1AP_PDU_t                pdu;
diff --git a/openair2/RRC/LTE/MESSAGES/asn1_msg.c b/openair2/RRC/LTE/MESSAGES/asn1_msg.c
index f38720f56c4..5907a0807b7 100644
--- a/openair2/RRC/LTE/MESSAGES/asn1_msg.c
+++ b/openair2/RRC/LTE/MESSAGES/asn1_msg.c
@@ -630,6 +630,17 @@ LTE_DRX_Config_t *do_DrxConfig(int CC_id,
                                LTE_UE_EUTRA_Capability_t *UEcap)
 //-----------------------------------------------------------------------------
 {
+  // CDRX not implemented for TDD
+  if (rrc_inst->carrier[CC_id].sib1->tdd_Config != NULL) {
+    LOG_E(RRC, "[do_DrxConfig] CDRX not implemented for TDD and LTE-M\n");
+    return NULL;
+  }
+
+  if (CC_id >= MAX_NUM_CCs) {
+    LOG_E(RRC, "[do_DrxConfig] Invalid CC_id for DRX configuration\n");
+    return NULL;
+  }
+
   LTE_DRX_Config_t *drxConfig = NULL;
   BIT_STRING_t *featureGroupIndicators = NULL;
   bool ueSupportCdrxShortFlag = false;
@@ -647,6 +658,9 @@ LTE_DRX_Config_t *do_DrxConfig(int CC_id,
     } else LOG_W(RRC,"[do_DrxConfig] No featureGroupIndicators pointer\n");
   } else LOG_W(RRC,"[do_DrxConfig] No UEcap pointer\n");
 
+  /* Check if UE support CE mode A */
+  // TODO
+
   if (configuration->radioresourceconfig[CC_id].drx_Config_present == LTE_DRX_Config_PR_NOTHING) {
     return NULL;
   }
diff --git a/openair2/RRC/LTE/rrc_eNB.c b/openair2/RRC/LTE/rrc_eNB.c
index c839ebc22cc..6b9eec4230c 100644
--- a/openair2/RRC/LTE/rrc_eNB.c
+++ b/openair2/RRC/LTE/rrc_eNB.c
@@ -3207,39 +3207,19 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
 
   if (NODE_IS_MONOLITHIC(RC.rrc[ctxt_pP->module_id]->node_type)) {
     /* CDRX Configuration */
-    // Need to check if UE is a BR UE
-    int UE_id = find_UE_id(module_id, rnti);
-
-    if (UE_id != -1) {
-      eNB_MAC_INST *mac = RC.mac[module_id];
-      UE_list_t *UE_list = &(mac->UE_list);
-
-      if ((rrc_inst->carrier[cc_id].sib1->tdd_Config == NULL) && 
-        (UE_list->UE_template[ue_context_pP->ue_context.primaryCC_id][UE_id].rach_resource_type == 0)) {
-        // CDRX can be only configured in case of FDD and non BR UE (09/04/19)
-        
-        LOG_D(RRC, "Processing the DRX configuration in RRC Connection Reconfiguration\n");
-
-        /* Process the IE drx_Config */
-        if (cc_id < MAX_NUM_CCs) {
-          mac_MainConfig->drx_Config = do_DrxConfig(cc_id, &rrc_inst->configuration, UEcap); // drx_Config IE
+    LOG_D(RRC, "Processing the DRX configuration in RRC Connection Reconfiguration\n");
+    
+    /* Process the IE drx_Config */    
+    mac_MainConfig->drx_Config = do_DrxConfig(cc_id, &rrc_inst->configuration, UEcap); // drx_Config IE
 
-          if (mac_MainConfig->drx_Config == NULL) {
-            LOG_E(RRC, "drx_Configuration parameter is NULL, cannot configure local UE parameters\n");
-          } else {
-            /* Set timers and thresholds values in local MAC context of UE */
-            eNB_Config_Local_DRX(module_id, rnti, mac_MainConfig->drx_Config);
-            LOG_D(RRC, "DRX configured in mac main config for RRC Connection Reconfiguration\n");
-          }
-        } else {
-          LOG_E(RRC, "Invalid CC_id for DRX configuration\n");
-        }
-      } else { // CDRX not implemented for TDD and LTE-M (09/04/19)
-        LOG_E(RRC, "CDRX not implemented for TDD and LTE-M\n");
-      }
-    } else { // UE_id invalid
-      LOG_E(RRC, "Invalid UE_id found!\n");
+    if (mac_MainConfig->drx_Config == NULL) {
+      LOG_E(RRC, "drx_Configuration parameter is NULL, cannot configure local UE parameters\n");
     }
+
+    /* Set timers and thresholds values in local MAC context of UE */
+    eNB_Config_Local_DRX(module_id, rnti, mac_MainConfig->drx_Config);
+    LOG_D(RRC, "DRX configured in mac main config for RRC Connection Reconfiguration\n");
+    
     /* End of CDRX configuration */
   }
 
-- 
GitLab