From afeb57549c5644ec423c9a0c8df180f1f9816107 Mon Sep 17 00:00:00 2001
From: Calvin <kai-hsiang.hsu@eurecom.fr>
Date: Wed, 16 May 2018 16:56:44 +0200
Subject: [PATCH] push EN-DC RRC configuration initizalization

---
 openair2/RRC/LITE/rrc_UE.c | 56 ++++++++++++++++++++++++++++++++++++++
 targets/RT/USER/lte-ue.c   |  7 ++++-
 2 files changed, 62 insertions(+), 1 deletion(-)

diff --git a/openair2/RRC/LITE/rrc_UE.c b/openair2/RRC/LITE/rrc_UE.c
index 2a12def752..72d6dd9895 100644
--- a/openair2/RRC/LITE/rrc_UE.c
+++ b/openair2/RRC/LITE/rrc_UE.c
@@ -1939,6 +1939,62 @@ rrc_ue_process_rrcConnectionReconfiguration(
         LOG_I(RRC,"Radio Resource Configuration is present\n");
         rrc_ue_process_radioResourceConfigDedicated(ctxt_pP,eNB_index, rrcConnectionReconfiguration_r8->radioResourceConfigDedicated);
       }
+      
+
+      void *non_criticical_ext_iterator = rrcConnectionReconfiguration_r8;
+      RCCConnectionReconfiguration_v1510_IEs_t *rrc_connection_reconfiguration_v1510_IEs = (RRCConnectionReconfiguration_v1510_IEs_t *)0;
+      // fetch EN-DC for NR_RRC here
+      // r8
+      if( ((RRCConnectionReconfiguration_r8_IEs_t *)non_criticical_ext_iterator)->nonCriticalExtension != (RRCConnectionReconfiguration_v890_IEs_t *)0){
+        non_criticical_ext_iterator = ((RRCConnectionReconfiguration_r8_IEs_t *)non_criticical_ext_iterator)->nonCriticalExtension;
+      }
+      // v89
+      if( ((RRCConnectionReconfiguration_v890_IEs_t *)non_criticical_ext_iterator)->nonCriticalExtension != (RRCConnectionReconfiguration_v920_IEs_t *)0){
+        non_criticical_ext_iterator = ((RRCConnectionReconfiguration_v890_IEs_t *)non_criticical_ext_iterator)->nonCriticalExtension;
+      }
+      // v92
+      if( ((RRCConnectionReconfiguration_v920_IEs_t *)non_criticical_ext_iterator)->nonCriticalExtension != (RRCConnectionReconfiguration_v1020_IEs_t *)0){
+        non_criticical_ext_iterator = ((RRCConnectionReconfiguration_v920_IEs_t *)non_criticical_ext_iterator)->nonCriticalExtension;
+      }
+      // v1020
+      if( ((RRCConnectionReconfiguration_v1020_IEs_t *)non_criticical_ext_iterator)->nonCriticalExtension != (RRCConnectionReconfiguration_v1130_IEs_t *)0){
+        non_criticical_ext_iterator = ((RRCConnectionReconfiguration_v1020_IEs_t *)non_criticical_ext_iterator)->nonCriticalExtension;
+      }
+      // v1130
+      if( ((RRCConnectionReconfiguration_v1130_IEs_t *)non_criticical_ext_iterator)->nonCriticalExtension != (RRCConnectionReconfiguration_v1250_IEs_t *)0){
+        non_criticical_ext_iterator = ((RRCConnectionReconfiguration_v1130_IEs_t *)non_criticical_ext_iterator)->nonCriticalExtension;
+      }
+      // v1250
+      if( ((RRCConnectionReconfiguration_v1250_IEs_t *)non_criticical_ext_iterator)->nonCriticalExtension != (RRCConnectionReconfiguration_v1310_IEs_t *)0){
+        non_criticical_ext_iterator = ((RRCConnectionReconfiguration_v1250_IEs_t *)non_criticical_ext_iterator)->nonCriticalExtension;
+      }
+      // v1310
+      if( ((RRCConnectionReconfiguration_v1310_IEs_t *)non_criticical_ext_iterator)->nonCriticalExtension != (RRCConnectionReconfiguration_v1430_IEs_t *)0){
+        non_criticical_ext_iterator = ((RRCConnectionReconfiguration_v1310_IEs_t *)non_criticical_ext_iterator)->nonCriticalExtension;
+      }
+      // v1430
+      if( ((RRCConnectionReconfiguration_v1430_IEs_t *)non_criticical_ext_iterator)->nonCriticalExtension != (RRCConnectionReconfiguration_v1510_IEs_t *)0){
+        rrc_connection_reconfiguration_v1510_IEs = ((RRCConnectionReconfiguration_v1430_IEs_t *)non_criticical_ext_iterator)->nonCriticalExtension;
+      }
+
+      if( rrc_connection_reconfiguration_v1510_IEs != (RRCConnectionReconfiguration_v1510_IEs_t *)0){ //  make sure v1510 is presented.
+        if(rrc_connection_reconfiguration_v1510_IEs->nr_Config_r15 != (struct nr_Config_r15 *)0){
+          switch(rrc_connection_reconfiguration_v1510_IEs->nr_Config_r15.present){
+            case nr_Config_r15_PR_setup:
+              //  process NR sCell config
+              if(rrc_connection_reconfiguration_v1510_IEs->nr_Config_r15.choice.setup->nr_SecondaryCellGroupConfig_r15 != (OCTET_STRING_t *)0){
+                nr_rrc_ue_decode_rrcReconfiguration(  rrc_connection_reconfiguration_v1510_IEs->nr_Config_r15.choice.setup->nr_SecondaryCellGroupConfig_r15->buffer, 
+                                                      rrc_connection_reconfiguration_v1510_IEs->nr_Config_r15.choice.setup->nr_SecondaryCellGroupConfig_r15.size); 
+              }
+             
+              break;
+            case nr_Config_r15_PR_release:
+            case nr_Config_r15_PR_NOTHING:
+            default:
+              break;
+          }
+        }
+      }
 
 #if defined(ENABLE_ITTI)
 
diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c
index 2c83ea9a04..30fce49379 100644
--- a/targets/RT/USER/lte-ue.c
+++ b/targets/RT/USER/lte-ue.c
@@ -213,7 +213,12 @@ void init_UE(int nb_inst,int eMBMS_active, int uecap_xer_in, int timing_correcti
   l2_init_ue(eMBMS_active,(uecap_xer_in==1)?uecap_xer:NULL,
 	     0,// cba_group_active
 	     0); // HO flag
-  
+
+#ifdef NR 
+//  nr_l2_init_ue();
+//  nr_l3_init_ue();
+#endif
+
   for (inst=0;inst<nb_inst;inst++) {
 
     LOG_I(PHY,"Initializing memory for UE instance %d (%p)\n",inst,PHY_vars_UE_g[inst]);
-- 
GitLab