diff --git a/openair2/ENB_APP/enb_agent_common.c b/openair2/ENB_APP/enb_agent_common.c
index 6122789d6e442da0c2ec31c426ba7ae1d85c1c51..f890ba829c1cf795ee3809a78a6ed4b77137461d 100644
--- a/openair2/ENB_APP/enb_agent_common.c
+++ b/openair2/ENB_APP/enb_agent_common.c
@@ -545,14 +545,43 @@ int get_tx_queue_size(mid_t mod_id, mid_t ue_id, logical_chan_id_t channel_id)
 	return rlc_status.bytes_in_buffer;
 }
 
-int get_MAC_CE_bitmap_TA(mid_t mod_id, mid_t ue_id)
+int get_MAC_CE_bitmap_TA(mid_t mod_id, mid_t ue_id,int CC_id)
 {
-	if((((UE_list_t *)enb_ue[mod_id])->UE_sched_ctrl[ue_id].ta_update) > 0)
+	rnti_t rnti = get_ue_crnti(mod_id,ue_id);
+	LTE_eNB_UE_stats *eNB_UE_stats = mac_xface->get_eNB_UE_stats(mod_id,CC_id,rnti);
+
+	int32_t time_advance;
+	switch (PHY_vars_eNB_g[mod_id][CC_id]->lte_frame_parms.N_RB_DL) {
+	case 6:
+	  time_advance = eNB_UE_stats->timing_advance_update;
+	  break;
+
+	case 15:
+	  time_advance = eNB_UE_stats->timing_advance_update/2;
+	  break;
+
+	case 25:
+	  time_advance = eNB_UE_stats->timing_advance_update/4;
+	  break;
+
+	case 50:
+	  time_advance = eNB_UE_stats->timing_advance_update/8;
+	  break;
+
+	case 75:
+	  time_advance = eNB_UE_stats->timing_advance_update/12;
+	  break;
+
+	case 100:
+	  time_advance = eNB_UE_stats->timing_advance_update/16;
+	  break;
+	}
+
+	if(time_advance > 0)
 		return 1;
 	else
 		return 0;
 }
-
 int get_active_CC(mid_t mod_id, mid_t ue_id)
 {
 	return ((UE_list_t *)enb_ue[mod_id])->numactiveCCs[ue_id];
@@ -1793,16 +1822,32 @@ int enb_agent_enb_config_reply(mid_t mod_id, const void *params, Protocol__Progr
       cell_conf[i]->pusch_hopping_offset = get_hopping_offset(enb_id,i);
       cell_conf[i]->has_pusch_hopping_offset = 1;
       //TODO: Fill in with actual value
-      cell_conf[i]->hopping_mode = get_hopping_mode(enb_id,i);
+      if(get_hopping_mode(enb_id,i) == 0){
+	 cell_conf[i]->hopping_mode = PROTOCOL__PRP_HOPPING_MODE__PRHM_INTER;
+      }else if(get_hopping_mode(enb_id,i) == 1){
+	cell_conf[i]->hopping_mode = PROTOCOL__PRP_HOPPING_MODE__PRHM_INTERINTRA;
+      }
       cell_conf[i]->has_hopping_mode = 1;
       //TODO: Fill in with actual value, the number of subbands
       cell_conf[i]->n_sb = get_n_SB(enb_id,i);
       cell_conf[i]->has_n_sb = 1;
       //TODO: Fill in with actual value, The number of resource element groups used for PHICH. One of PRPR_
-      cell_conf[i]->phich_resource = get_phich_resource(enb_id,i);
+      if(get_phich_resource(enb_id,i) == 0){
+	cell_conf[i]->phich_resource = PROTOCOL__PRP_PHICH_RESOURCE__PRPR_ONE_SIXTH; //0
+      }else if (get_phich_resource(enb_id,i) == 1){
+	cell_conf[i]->phich_resource = PROTOCOL__PRP_PHICH_RESOURCE__PRPR_HALF; //1
+      }else if (get_phich_resource(enb_id,i) == 2){
+	cell_conf[i]->phich_resource = PROTOCOL__PRP_PHICH_RESOURCE__PRPR_ONE; // 2
+      }else if (get_phich_resource(enb_id,i) == 3){
+	cell_conf[i]->phich_resource = PROTOCOL__PRP_PHICH_RESOURCE__PRPR_TWO;//3
+      }
       cell_conf[i]->has_phich_resource = 1;
       //TODO: Fill in with actual value, one of the PRPD_ values
-      cell_conf[i]->phich_duration = get_phich_duration(enb_id,i);
+      if(get_phich_duration(enb_id,i) == 0){
+    	cell_conf[i]->phich_duration = PROTOCOL__PRP_PHICH_DURATION__PRPD_NORMAL;
+      }else if(get_phich_duration(enb_id,i) == 1){
+	cell_conf[i]->phich_duration = PROTOCOL__PRP_PHICH_DURATION__PRPD_EXTENDED;
+      }
       cell_conf[i]->has_phich_duration = 1;
       //TODO: Fill in with actual value, See TS 36.211, section 6.9
       cell_conf[i]->init_nr_pdcch_ofdm_sym = get_num_pdcch_symb(enb_id,i);
@@ -1852,16 +1897,29 @@ int enb_agent_enb_config_reply(mid_t mod_id, const void *params, Protocol__Progr
       cell_conf[i]->ul_bandwidth = get_N_RB_UL(enb_id,i);
       cell_conf[i]->has_ul_bandwidth = 1;
       //TODO: Fill in with actual value, one of PRUCPL values
-      cell_conf[i]->ul_cyclic_prefix_length = get_ul_cyclic_prefix_length(enb_id,i);
+      if(get_ul_cyclic_prefix_length(enb_id,i) == 0){
+    	  cell_conf[i]->ul_cyclic_prefix_length = PROTOCOL__PRP_UL_CYCLIC_PREFIX_LENGTH__PRUCPL_NORMAL;
+      }else if(get_ul_cyclic_prefix_length(enb_id,i) == 1){
+	cell_conf[i]->ul_cyclic_prefix_length = PROTOCOL__PRP_UL_CYCLIC_PREFIX_LENGTH__PRUCPL_EXTENDED;      
+      }
       cell_conf[i]->has_ul_cyclic_prefix_length = 1;
       //TODO: Fill in with actual value, one of PRUCPL values
-      cell_conf[i]->dl_cyclic_prefix_length = get_dl_cyclic_prefix_length(enb_id,i);
+      if(get_ul_cyclic_prefix_length(enb_id,i) == 0){
+    	  cell_conf[i]->ul_cyclic_prefix_length = PROTOCOL__PRP_DL_CYCLIC_PREFIX_LENGTH__PRDCPL_NORMAL;
+      }else if(get_ul_cyclic_prefix_length(enb_id,i) == 1){
+	  cell_conf[i]->ul_cyclic_prefix_length = PROTOCOL__PRP_DL_CYCLIC_PREFIX_LENGTH__PRDCPL_EXTENDED;
+      }
+
       cell_conf[i]->has_dl_cyclic_prefix_length = 1;
       //TODO: Fill in with actual value, number of cell specific antenna ports
       cell_conf[i]->antenna_ports_count = 1;
       cell_conf[i]->has_antenna_ports_count = 1;
       //TODO: Fill in with actual value, one of PRDM values
-      cell_conf[i]->duplex_mode = get_duplex_mode(enb_id,i);
+      if(get_duplex_mode(enb_id,i) == 1){
+	cell_conf[i]->duplex_mode = PROTOCOL__PRP_DUPLEX_MODE__PRDM_FDD;
+      }else if(get_duplex_mode(enb_id,i) == 0){
+	cell_conf[i]->duplex_mode = PROTOCOL__PRP_DUPLEX_MODE__PRDM_TDD;
+      }
       cell_conf[i]->has_duplex_mode = 1;
       //TODO: Fill in with actual value, DL/UL subframe assignment. TDD only
       cell_conf[i]->subframe_assignment = get_subframe_assignment(enb_id,i);
@@ -1936,7 +1994,11 @@ int enb_agent_enb_config_reply(mid_t mod_id, const void *params, Protocol__Progr
       cell_conf[i]->srs_mac_up_pts = get_srs_MaxUpPts(enb_id,i);
       cell_conf[i]->has_srs_mac_up_pts = 1;
       //TODO: Fill in with actual value, One of the PREQ_ values
-      cell_conf[i]->enable_64qam = get_enable64QAM(enb_id,i);
+      if(get_enable64QAM(enb_id,i) == 0){
+	cell_conf[i]->enable_64qam = PROTOCOL__PRP_QAM__PREQ_MOD_16QAM;
+      }else if(get_enable64QAM(enb_id,i) == 1){
+	cell_conf[i]->enable_64qam = PROTOCOL__PRP_QAM__PREQ_MOD_64QAM;
+      }
       cell_conf[i]->has_enable_64qam = 1;
       //TODO: Fill in with actual value, Carrier component index
       cell_conf[i]->carrier_index = i;
diff --git a/openair2/ENB_APP/enb_agent_common.h b/openair2/ENB_APP/enb_agent_common.h
index 76c68437d05627ec86e43cccf32b92963fc89ff5..e8fbf3afb81b2f74194207ae7780e82a67f3f968 100644
--- a/openair2/ENB_APP/enb_agent_common.h
+++ b/openair2/ENB_APP/enb_agent_common.h
@@ -157,7 +157,7 @@ int get_ue_wcqi (mid_t mod_id, mid_t ue_id);
 
 int get_tx_queue_size(mid_t mod_id, mid_t ue_id, logical_chan_id_t channel_id);
 
-int get_MAC_CE_bitmap_TA(mid_t mod_id, mid_t ue_id);
+int get_MAC_CE_bitmap_TA(mid_t mod_id, mid_t ue_id, int CC_id);
 
 int get_active_CC(mid_t mod_id, mid_t ue_id);
 
diff --git a/openair2/ENB_APP/enb_agent_mac.c b/openair2/ENB_APP/enb_agent_mac.c
index fa190bbf29be6c095c4faf4ce26d81b6d972e361..0957bd94f25dc6d80a428be45c9a5c9891a6e56d 100644
--- a/openair2/ENB_APP/enb_agent_mac.c
+++ b/openair2/ENB_APP/enb_agent_mac.c
@@ -486,7 +486,7 @@ int enb_agent_mac_stats_reply(mid_t mod_id,
       /* Check flag for creation of MAC CE buffer status report */
       if (report_config->ue_report_type[i].ue_report_flags & PROTOCOL__PRP_UE_STATS_TYPE__PRUST_MAC_CE_BS) {
 	// TODO: Fill in the actual MAC CE buffer status report
-	ue_report[i]->pending_mac_ces = (get_MAC_CE_bitmap_TA(enb_id,i) | (0 << 1) | (0 << 2) | (0 << 3)) & 15; /* Use as bitmap. Set one or more of the; /* Use as bitmap. Set one or more of the
+	ue_report[i]->pending_mac_ces = (get_MAC_CE_bitmap_TA(enb_id,i,0) | (0 << 1) | (0 << 2) | (0 << 3)) & 15; /* Use as bitmap. Set one or more of the; /* Use as bitmap. Set one or more of the
 					       PROTOCOL__PRP_CE_TYPE__PRPCET_ values
 					       found in stats_common.pb-c.h. See
 					       prp_ce_type in progRAN specification */
@@ -957,7 +957,10 @@ int enb_agent_mac_sf_trigger(mid_t mod_id, const void *params, Protocol__Progran
       dl_info[i]->harq_status = malloc(sizeof(uint32_t) * dl_info[i]->n_harq_status);
       for (j = 0; j < dl_info[i]->n_harq_status; j++) {
 	// TODO: This should be different per TB
-	dl_info[i]->harq_status[j] = harq_status;
+ 	  if(harq_status == 0)
+    		  dl_info[i]->harq_status[j] = PROTOCOL__PRP_HARQ_STATUS__PRHS_ACK;
+    	  else if (harq_status == 1)
+    		  dl_info[i]->harq_status[j] = PROTOCOL__PRP_HARQ_STATUS__PRHS_NACK;
       }
       /*TODO: fill in the serving cell index for this UE */
       dl_info[i]->serv_cell_index = UE_PCCID(mod_id,i);