diff --git a/openair2/ENB_APP/flexran_agent_common.c b/openair2/ENB_APP/flexran_agent_common.c
index bffe145c92abad43233e628056aab3f64de10cde..53137855d36341ac4d0e74f2ec4e2f200e351846 100644
--- a/openair2/ENB_APP/flexran_agent_common.c
+++ b/openair2/ENB_APP/flexran_agent_common.c
@@ -840,33 +840,18 @@ int flexran_agent_enb_config_reply(mid_t mod_id, const void *params, Protocol__F
       cell_conf[i]->pusch_hopping_offset = flexran_get_hopping_offset(mod_id,i);
       cell_conf[i]->has_pusch_hopping_offset = 1;
 
-      if (flexran_get_hopping_mode(mod_id,i) == 0) {
-	cell_conf[i]->hopping_mode = PROTOCOL__FLEX_HOPPING_MODE__FLHM_INTER;
-      } else if(flexran_get_hopping_mode(mod_id,i) == 1) {
-	cell_conf[i]->hopping_mode = PROTOCOL__FLEX_HOPPING_MODE__FLHM_INTERINTRA;
-      }
+      cell_conf[i]->hopping_mode = flexran_get_hopping_mode(mod_id,i);
       cell_conf[i]->has_hopping_mode = 1;
 
       cell_conf[i]->n_sb = flexran_get_n_SB(mod_id,i);
       cell_conf[i]->has_n_sb = 1;
 
-      if (flexran_get_phich_resource(mod_id,i) == 0) {
-	cell_conf[i]->phich_resource = PROTOCOL__FLEX_PHICH_RESOURCE__FLPR_ONE_SIXTH; //0
-      } else if (flexran_get_phich_resource(mod_id,i) == 1) {
-	cell_conf[i]->phich_resource = PROTOCOL__FLEX_PHICH_RESOURCE__FLPR_HALF; //1
-      } else if (flexran_get_phich_resource(mod_id,i) == 2) {
-	cell_conf[i]->phich_resource = PROTOCOL__FLEX_PHICH_RESOURCE__FLPR_ONE; // 2
-      } else if (flexran_get_phich_resource(mod_id,i) == 3) {
-	cell_conf[i]->phich_resource = PROTOCOL__FLEX_PHICH_RESOURCE__FLPR_TWO;//3
-      }
+      cell_conf[i]->phich_resource = flexran_get_phich_resource(mod_id,i);
       cell_conf[i]->has_phich_resource = 1;
 
-      if (flexran_get_phich_duration(mod_id,i) == 0) {
-    	cell_conf[i]->phich_duration = PROTOCOL__FLEX_PHICH_DURATION__FLPD_NORMAL;
-      } else if(flexran_get_phich_duration(mod_id,i) == 1) {
-	cell_conf[i]->phich_duration = PROTOCOL__FLEX_PHICH_DURATION__FLPD_EXTENDED;
-      }
+      cell_conf[i]->phich_duration = flexran_get_phich_duration(mod_id,i);
       cell_conf[i]->has_phich_duration = 1;
+
       cell_conf[i]->init_nr_pdcch_ofdm_sym = flexran_get_num_pdcch_symb(mod_id,i);
       cell_conf[i]->has_init_nr_pdcch_ofdm_sym = 1;
       Protocol__FlexSiConfig *si_config;
@@ -914,29 +899,18 @@ int flexran_agent_enb_config_reply(mid_t mod_id, const void *params, Protocol__F
       cell_conf[i]->ul_bandwidth = flexran_get_N_RB_UL(mod_id,i);
       cell_conf[i]->has_ul_bandwidth = 1;
 
-      if (flexran_get_ul_cyclic_prefix_length(mod_id, i) == 0) {
-	cell_conf[i]->ul_cyclic_prefix_length = PROTOCOL__FLEX_UL_CYCLIC_PREFIX_LENGTH__FLUCPL_NORMAL;
-      } else if(flexran_get_ul_cyclic_prefix_length(mod_id, i) == 1) {
-	cell_conf[i]->ul_cyclic_prefix_length = PROTOCOL__FLEX_UL_CYCLIC_PREFIX_LENGTH__FLUCPL_EXTENDED;
-      }
+      cell_conf[i]->ul_cyclic_prefix_length = flexran_get_ul_cyclic_prefix_length(mod_id, i);
       cell_conf[i]->has_ul_cyclic_prefix_length = 1;
 
-      if (flexran_get_ul_cyclic_prefix_length(mod_id,i) == 0) {
-	cell_conf[i]->ul_cyclic_prefix_length = PROTOCOL__FLEX_DL_CYCLIC_PREFIX_LENGTH__FLDCPL_NORMAL;
-      } else if (flexran_get_ul_cyclic_prefix_length(mod_id,i) == 1) {
-	cell_conf[i]->ul_cyclic_prefix_length = PROTOCOL__FLEX_DL_CYCLIC_PREFIX_LENGTH__FLDCPL_EXTENDED;
-      }
-
+      cell_conf[i]->dl_cyclic_prefix_length = flexran_get_dl_cyclic_prefix_length(mod_id,i);
       cell_conf[i]->has_dl_cyclic_prefix_length = 1;
+
       cell_conf[i]->antenna_ports_count = flexran_get_antenna_ports(mod_id, i);
       cell_conf[i]->has_antenna_ports_count = 1;
 
-      if (flexran_get_duplex_mode(mod_id,i) == 1) {
-	cell_conf[i]->duplex_mode = PROTOCOL__FLEX_DUPLEX_MODE__FLDM_FDD;
-      } else if(flexran_get_duplex_mode(mod_id,i) == 0) {
-	cell_conf[i]->duplex_mode = PROTOCOL__FLEX_DUPLEX_MODE__FLDM_TDD;
-      }
+      cell_conf[i]->duplex_mode = flexran_get_duplex_mode(mod_id,i);
       cell_conf[i]->has_duplex_mode = 1;
+
       cell_conf[i]->subframe_assignment = flexran_get_subframe_assignment(mod_id, i);
       cell_conf[i]->has_subframe_assignment = 1;
       cell_conf[i]->special_subframe_patterns = flexran_get_special_subframe_assignment(mod_id,i);
@@ -1022,11 +996,7 @@ int flexran_agent_enb_config_reply(mid_t mod_id, const void *params, Protocol__F
       cell_conf[i]->ul_pusch_power = flexran_agent_get_operating_pusch_p0 (mod_id,i);
       cell_conf[i]->has_ul_pusch_power = 1;
 
-      if (flexran_get_enable64QAM(mod_id,i) == 0) {
-	cell_conf[i]->enable_64qam = PROTOCOL__FLEX_QAM__FLEQ_MOD_16QAM;
-      } else if(flexran_get_enable64QAM(mod_id,i) == 1) {
-	cell_conf[i]->enable_64qam = PROTOCOL__FLEX_QAM__FLEQ_MOD_64QAM;
-      }
+      cell_conf[i]->enable_64qam = flexran_get_enable64QAM(mod_id,i);
       cell_conf[i]->has_enable_64qam = 1;
 
       cell_conf[i]->carrier_index = i;
diff --git a/openair2/ENB_APP/flexran_agent_ran_api.c b/openair2/ENB_APP/flexran_agent_ran_api.c
index 97e91dcfa8505323dac724b735ef9d4ceed00e64..09088aa79de02e01128aff9761373701060065c4 100644
--- a/openair2/ENB_APP/flexran_agent_ran_api.c
+++ b/openair2/ENB_APP/flexran_agent_ran_api.c
@@ -508,10 +508,16 @@ uint8_t flexran_get_hopping_offset(mid_t mod_id, uint8_t cc_id)
   return RC.eNB[mod_id][cc_id]->frame_parms.pusch_config_common.pusch_HoppingOffset;
 }
 
-PUSCH_HOPPING_t flexran_get_hopping_mode(mid_t mod_id, uint8_t cc_id)
-{
-  if (!phy_is_present(mod_id, cc_id)) return 0;
-  return RC.eNB[mod_id][cc_id]->frame_parms.pusch_config_common.hoppingMode;
+Protocol__FlexHoppingMode flexran_get_hopping_mode(mid_t mod_id, uint8_t cc_id)
+{
+  if (!phy_is_present(mod_id, cc_id)) return -1;
+  switch (RC.eNB[mod_id][cc_id]->frame_parms.pusch_config_common.hoppingMode) {
+  case interSubFrame:
+    return PROTOCOL__FLEX_HOPPING_MODE__FLHM_INTER;
+  case intraAndInterSubFrame:
+    return PROTOCOL__FLEX_HOPPING_MODE__FLHM_INTERINTRA;
+  }
+  return -1;
 }
 
 uint8_t flexran_get_n_SB(mid_t mod_id, uint8_t cc_id)
@@ -520,33 +526,41 @@ uint8_t flexran_get_n_SB(mid_t mod_id, uint8_t cc_id)
   return RC.eNB[mod_id][cc_id]->frame_parms.pusch_config_common.n_SB;
 }
 
-uint8_t flexran_get_enable64QAM(mid_t mod_id, uint8_t cc_id)
+Protocol__FlexQam flexran_get_enable64QAM(mid_t mod_id, uint8_t cc_id)
 {
   if (!phy_is_present(mod_id, cc_id)) return 0;
-  return RC.eNB[mod_id][cc_id]->frame_parms.pusch_config_common.enable64QAM;
+  if (RC.eNB[mod_id][cc_id]->frame_parms.pusch_config_common.enable64QAM == TRUE)
+    return PROTOCOL__FLEX_QAM__FLEQ_MOD_64QAM;
+  else
+    return PROTOCOL__FLEX_QAM__FLEQ_MOD_16QAM;
 }
 
-PHICH_DURATION_t flexran_get_phich_duration(mid_t mod_id, uint8_t cc_id)
+Protocol__FlexPhichDuration flexran_get_phich_duration(mid_t mod_id, uint8_t cc_id)
 {
-  if (!phy_is_present(mod_id, cc_id)) return 0;
-  return RC.eNB[mod_id][cc_id]->frame_parms.phich_config_common.phich_duration;
+  if (!phy_is_present(mod_id, cc_id)) return -1;
+  switch (RC.eNB[mod_id][cc_id]->frame_parms.phich_config_common.phich_duration) {
+  case normal:
+    return PROTOCOL__FLEX_PHICH_DURATION__FLPD_NORMAL;
+  case extended:
+    return PROTOCOL__FLEX_PHICH_DURATION__FLPD_EXTENDED;
+  }
+  return -1;
 }
 
-int flexran_get_phich_resource(mid_t mod_id, uint8_t cc_id)
+Protocol__FlexPhichResource flexran_get_phich_resource(mid_t mod_id, uint8_t cc_id)
 {
-  if (!phy_is_present(mod_id, cc_id)) return 0;
+  if (!phy_is_present(mod_id, cc_id)) return -1;
   switch (RC.eNB[mod_id][cc_id]->frame_parms.phich_config_common.phich_resource) {
   case oneSixth:
-    return 0;
+    return PROTOCOL__FLEX_PHICH_RESOURCE__FLPR_ONE_SIXTH;
   case half:
-    return 1;
+    return PROTOCOL__FLEX_PHICH_RESOURCE__FLPR_HALF;
   case one:
-    return 2;
+    return PROTOCOL__FLEX_PHICH_RESOURCE__FLPR_ONE;
   case two:
-    return 3;
-  default:
-    return -1;
+    return PROTOCOL__FLEX_PHICH_RESOURCE__FLPR_TWO;
   }
+  return -1;
 }
 
 uint16_t flexran_get_n1pucch_an(mid_t mod_id, uint8_t cc_id)
@@ -585,16 +599,28 @@ uint8_t flexran_get_maxHARQ_Msg3Tx(mid_t mod_id, uint8_t cc_id)
   return RC.eNB[mod_id][cc_id]->frame_parms.maxHARQ_Msg3Tx;
 }
 
-lte_prefix_type_t flexran_get_ul_cyclic_prefix_length(mid_t mod_id, uint8_t cc_id)
+Protocol__FlexUlCyclicPrefixLength flexran_get_ul_cyclic_prefix_length(mid_t mod_id, uint8_t cc_id)
 {
-  if (!phy_is_present(mod_id, cc_id)) return 0;
-  return RC.eNB[mod_id][cc_id]->frame_parms.Ncp_UL;
+  if (!phy_is_present(mod_id, cc_id)) return -1;
+  switch (RC.eNB[mod_id][cc_id]->frame_parms.Ncp_UL) {
+  case EXTENDED:
+    return PROTOCOL__FLEX_UL_CYCLIC_PREFIX_LENGTH__FLUCPL_EXTENDED;
+  case NORMAL:
+    return PROTOCOL__FLEX_UL_CYCLIC_PREFIX_LENGTH__FLUCPL_NORMAL;
+  }
+  return -1;
 }
 
-lte_prefix_type_t flexran_get_dl_cyclic_prefix_length(mid_t mod_id, uint8_t cc_id)
+Protocol__FlexDlCyclicPrefixLength flexran_get_dl_cyclic_prefix_length(mid_t mod_id, uint8_t cc_id)
 {
-  if (!phy_is_present(mod_id, cc_id)) return 0;
-  return RC.eNB[mod_id][cc_id]->frame_parms.Ncp;
+  if (!phy_is_present(mod_id, cc_id)) return -1;
+  switch (RC.eNB[mod_id][cc_id]->frame_parms.Ncp) {
+  case EXTENDED:
+    return PROTOCOL__FLEX_DL_CYCLIC_PREFIX_LENGTH__FLDCPL_EXTENDED;
+  case NORMAL:
+    return PROTOCOL__FLEX_DL_CYCLIC_PREFIX_LENGTH__FLDCPL_NORMAL;
+  }
+  return -1;
 }
 
 uint16_t flexran_get_cell_id(mid_t mod_id, uint8_t cc_id)
diff --git a/openair2/ENB_APP/flexran_agent_ran_api.h b/openair2/ENB_APP/flexran_agent_ran_api.h
index 8fbff216d3a283dc946a92be6f9bd1beb7025338..c98113a3923c0968cbaa59f6f8fce032cad0f83d 100644
--- a/openair2/ENB_APP/flexran_agent_ran_api.h
+++ b/openair2/ENB_APP/flexran_agent_ran_api.h
@@ -206,10 +206,10 @@ uint8_t flexran_get_prach_FreqOffset(mid_t mod_id, uint8_t cc_id);
 uint8_t flexran_get_maxHARQ_Msg3Tx(mid_t mod_id, uint8_t cc_id);
 
 /* Get the length of the UL cyclic prefix */
-lte_prefix_type_t flexran_get_ul_cyclic_prefix_length(mid_t mod_id, uint8_t cc_id);
+Protocol__FlexUlCyclicPrefixLength flexran_get_ul_cyclic_prefix_length(mid_t mod_id, uint8_t cc_id);
 
 /* Get the length of the DL cyclic prefix */
-lte_prefix_type_t flexran_get_dl_cyclic_prefix_length(mid_t mod_id, uint8_t cc_id);
+Protocol__FlexDlCyclicPrefixLength flexran_get_dl_cyclic_prefix_length(mid_t mod_id, uint8_t cc_id);
 
 /* Get the physical cell id of a cell */
 uint16_t flexran_get_cell_id(mid_t mod_id, uint8_t cc_id);
@@ -283,17 +283,17 @@ int flexran_update_p0_pucch(mid_t mod_id, mid_t ue_id, uint8_t cc_id);
 
 uint8_t flexran_get_threequarter_fs(mid_t mod_id, uint8_t cc_id);
 
-PUSCH_HOPPING_t flexran_get_hopping_mode(mid_t mod_id, uint8_t cc_id);
+Protocol__FlexHoppingMode flexran_get_hopping_mode(mid_t mod_id, uint8_t cc_id);
 
 uint8_t flexran_get_hopping_offset(mid_t mod_id, uint8_t cc_id);
 
 uint8_t flexran_get_n_SB(mid_t mod_id, uint8_t cc_id);
 
-int flexran_get_phich_resource(mid_t mod_id, uint8_t cc_id);
+Protocol__FlexPhichResource flexran_get_phich_resource(mid_t mod_id, uint8_t cc_id);
 
-uint8_t flexran_get_enable64QAM(mid_t mod_id, uint8_t cc_id);
+Protocol__FlexQam flexran_get_enable64QAM(mid_t mod_id, uint8_t cc_id);
 
-PHICH_DURATION_t flexran_get_phich_duration(mid_t mod_id, uint8_t cc_id);
+Protocol__FlexPhichDuration flexran_get_phich_duration(mid_t mod_id, uint8_t cc_id);
 
 /*
  * ************************************