diff --git a/nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h b/nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h
index 21e0fab8ca2992d475acd06f7d584534c66aefd0..8a06da2d4710f6ef30f1d13f61e23dc4d72f1fab 100644
--- a/nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h
+++ b/nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h
@@ -1,5 +1,5 @@
-#ifndef _NFAPI_INTERFACE_NR_H_
-#define _NFAPI_INTERFACE_NR_H_
+#ifndef _NFAPI_NR_INTERFACE_H_
+#define _NFAPI_NR_INTERFACE_H_
 
 #include "nfapi_interface.h"
 
@@ -260,7 +260,7 @@ typedef struct {
 
 typedef struct {
   nfapi_p4_p5_message_header_t              header;
-  uint8_t num_tlv;
+  uint8_t 									num_tlv;
   nfapi_nr_subframe_config_t                subframe_config;
   nfapi_nr_rf_config_t                      rf_config;
   nfapi_nr_sch_config_t                     sch_config;
@@ -285,10 +285,10 @@ typedef struct {
 typedef enum {
 	NFAPI_NR_DL_DCI_FORMAT_1_0 = 0,
 	NFAPI_NR_DL_DCI_FORMAT_1_1,
-  NFAPI_NR_DL_DCI_FORMAT_2_0,
-  NFAPI_NR_DL_DCI_FORMAT_2_1,
-  NFAPI_NR_DL_DCI_FORMAT_2_2,
-  NFAPI_NR_DL_DCI_FORMAT_2_3,
+	NFAPI_NR_DL_DCI_FORMAT_2_0,
+	NFAPI_NR_DL_DCI_FORMAT_2_1,
+	NFAPI_NR_DL_DCI_FORMAT_2_2,
+	NFAPI_NR_DL_DCI_FORMAT_2_3,
 } nfapi_nr_dl_dci_format_e;
 
 typedef enum {
@@ -296,22 +296,123 @@ typedef enum {
 	NFAPI_NR_UL_DCI_FORMAT_1_0,
 } nfapi_nr_ul_dci_format_e;
 
+typedef enum {
+	NFAPI_NR_RNTI_new = 0,
+	NFAPI_NR_RNTI_C,
+	NFAPI_NR_RNTI_RA,
+	NFAPI_NR_RNTI_P,
+	NFAPI_NR_RNTI_CS,
+	NFAPI_NR_RNTI_TC,
+	NFAPI_NR_RNTI_SP_CSI,
+	NFAPI_NR_RNTI_SI,
+	NFAPI_NR_RNTI_SFI,
+	NFAPI_NR_RNTI_INT,
+	NFAPI_NR_RNTI_TPC_PUSCH,
+	NFAPI_NR_RNTI_TPC_PUCCH,
+	NFAPI_NR_RNTI_TPC_SRS
+} nfapi_nr_rnti_type_e ;
+
 // P7 Sub Structures
+//formats 0_0 and 0_1
+typedef struct {
+
+nfapi_tl_t tl;
+
+uint8_t cce_idx;
+uint8_t aggregation_level;
+uint16_t rnti;
+
+uint8_t dci_format; //1 bit
+uint16_t frequency_domain_resource_assignment; //up to 9 bits
+uint8_t time_domain_resource_assignment; //0, 1, 2, 3 or 4 bits
+uint8_t frequency_hopping_flag; //1 bit
+uint8_t mcs; //5 bits
+uint8_t new_data_indicator; //1 bit
+uint8_t redundancy_version; //2 bits
+uint8_t harq_process; //4 bits
+uint8_t tpc; //2 bits
+uint16_t padding;
+uint8_t ul_sul_indicator; //0 or 1 bit
+
+uint8_t carrier_indicator; //0 or 3 bits
+uint8_t bwp_indicator; //0, 1 or 2 bits
+uint8_t downlink_assignment_index1; //1 or 2 bits
+uint8_t downlink_assignment_index2; //0 or 2 bits
+uint8_t srs_resource_indicator;
+uint8_t precoding_information;
+uint8_t antenna_ports;
+uint8_t srs_request;
+uint8_t csi_request;
+uint8_t cbgti; //CBG Transmission Information: 0, 2, 4, 6 or 8 bits
+uint8_t ptrs_dmrs_association;
+uint8_t beta_offset_indicator; //0 or 2 bits
+uint8_t dmrs_sequence_initialization; //0 or 1 bit
+uint8_t ul_sch_indicator; //1 bit
+
+} nfapi_nr_ul_config_dci_ul_pdu_rel15_t;
+//#define NFAPI_NR_UL_CONFIG_REQUEST_DCI_UL_PDU_REL15_TAG 0x????
+
+//formats 1_0, 1_1, 2_0, 2_1, 2_2 and 2_3
 typedef struct {
-	nfapi_tl_t tl;
-  // conf
-	uint8_t dci_format;
-	uint8_t cce_idx;
-	uint8_t aggregation_level;
-	uint16_t rnti;
-  // DCI fields
+
+nfapi_tl_t tl;
+
+uint8_t cce_idx;
+uint8_t aggregation_level;
+uint16_t rnti;
+
+uint8_t dci_format; //1 bit
+uint16_t frequency_domain_resource_assignment; //up to 9 bits
+
+uint8_t ra_preamble_index; //6 bits
+uint8_t ul_sul_indicator; //1 bit
+uint8_t ss_pbch_index; //6 bits
+uint8_t prach_mask_index; //4 bits
+uint16_t reserved; //1_0/C-RNTI:10 bits, 1_0/P-RNTI: 6 bits, 1_0/SI-&RA-RNTI: 16 bits
+
+uint8_t time_domain_resource_assignment; //0, 1, 2, 3 or 4 bits
+uint8_t vrb_to_prb_mapping; //0 or 1 bit
+uint8_t mcs; //5 bits
+uint8_t new_data_indicator; //1 bit
+uint8_t redundancy_version; //2 bits
+uint8_t harq_process; //4 bits
+uint8_t downlink_assignment_index; //0, 2 or 4 bits
+uint8_t tpc; //2 bits
+uint8_t pucch_resource_indicator; //3 bits
+uint8_t pdsch_to_harq_feedback_timing_indicator; //0, 1, 2 or 3 bits
+
+uint8_t short_messages_indicator; //2 bits
+uint8_t short_messages; //8 bits
+uint8_t tb_scaling; //2 bits
+
+uint8_t carrier_indicator; //0 or 3 bits
+uint8_t bwp_indicator; //0, 1 or 2 bits
+uint8_t prb_bundling_size_indicator; //0 or 1 bits
+uint8_t rate_matching_indicator; //0, 1 or 2 bits
+uint8_t zp_csi_rs_trigger; //0, 1 or 2 bits
+uint8_t antenna_ports; //4, 5 or 6 bits
+uint8_t transmission_configuration_indication; //0 or 3 bits
+uint8_t srs_request; //2 bits
+uint8_t cbgti; //CBG Transmission Information: 0, 2, 4, 6 or 8 bits
+uint8_t cbgfi; //CBG Flushing Out Information: 0 or 1 bit
+uint8_t dmrs_sequence_initialization; //0 or 1 bit
+
+uint8_t slot_format_indicator_count;
+uint8_t *slot_format_indicators;
+
+uint8_t pre_emption_indication_count;
+uint16_t *pre_emption_indications; //14 bit
+
+uint8_t block_number_count;
+uint8_t *block_numbers;
 
 } nfapi_nr_dl_config_dci_dl_pdu_rel15_t;
-#define NFAPI_NR_DL_CONFIG_REQUEST_DCI_DL_PDU_REL15_TAG
+//#define NFAPI_NR_DL_CONFIG_REQUEST_DCI_DL_PDU_REL15_TAG 0x????
+
 
 typedef struct {
 	nfapi_nr_dl_config_dci_dl_pdu_rel15_t dci_dl_pdu_rel15;
-} nfapi_nr_dl_config_dci_dl_pdu;
+	nfapi_nr_ul_config_dci_ul_pdu_rel15_t dci_ul_pdu_rel15;
+} nfapi_nr_config_dci_pdu;
 
 #endif
-
diff --git a/openair1/PHY/NR_TRANSPORT/nr_dci.h b/openair1/PHY/NR_TRANSPORT/nr_dci.h
index 03a044ad5ec19d19e7c7284916da1799b56be2f2..f49b1608c917b8129ae99f5d70fee0e9485edcbc 100644
--- a/openair1/PHY/NR_TRANSPORT/nr_dci.h
+++ b/openair1/PHY/NR_TRANSPORT/nr_dci.h
@@ -18,50 +18,13 @@
  * For more information about the OpenAirInterface (OAI) Software Alliance:
  *      contact@openairinterface.org
  */
+
 #ifndef __PHY_NR_TRANSPORT_DCI__H
 #define __PHY_NR_TRANSPORT_DCI__H
 
 #include "defs_gNB.h"
 
-
-typedef enum {
-  nr_dci_format_0_0=0,
-  nr_dci_format_0_1,
-  nr_dci_format_2_0,
-  nr_dci_format_2_1,
-  nr_dci_format_2_2,
-  nr_dci_format_2_3,
-  nr_dci_format_1_0,
-  nr_dci_format_1_1,
-} nr_dci_format_e;
-
-typedef enum {
-  nr_rnti_type_SI_RNTI=0,
-  nr_rnti_type_RA_RNTI,
-  nr_rnti_type_C_RNTI,
-  nr_rnti_type_TC_RNTI,
-  nr_rnti_type_CS_RNTI,
-  nr_rnti_type_P_RNTI
-} nr_rnti_type_e;
-
-
-typedef struct {
-  /// Length of DCI in bits
-  uint8_t size;
-  /// Aggregation level
-  uint8_t L;
-  /// Position of first CCE of the dci
-  int firstCCE;
-  /// flag to indicate that this is a RA response
-  boolean_t ra_flag;
-  /// rnti
-  nr_rnti_type_e rnti;
-  /// Format
-  DCI_format_t format;
-  /// DCI pdu
-  uint8_t dci_pdu[8];
-} NR_DCI_ALLOC_t;
-
+typedef unsigned __int128 uint128_t;
 
 uint8_t nr_get_dci_size(nr_dci_format_e format,
                         nr_rnti_type_e rnti,
@@ -72,6 +35,6 @@ uint8_t nr_generate_dci_top(NR_DCI_ALLOC_t dci_alloc,
                             int32_t** txdataF,
                             int16_t amp,
                             NR_DL_FRAME_PARMS* frame_parms,
-                            nfapi_config_request_t* config)
+                            nfapi_config_request_t* config);
 
 #endif //__PHY_NR_TRANSPORT_DCI__H