From a24e5b1a2fc279805d699abfe4bfb5e324a72424 Mon Sep 17 00:00:00 2001
From: Guy De Souza <desouza@eurecom.fr>
Date: Mon, 6 Aug 2018 11:04:30 +0200
Subject: [PATCH] Minor changes

---
 openair1/PHY/NR_TRANSPORT/nr_dci_tools.c      | 21 ++++++++++++-------
 .../LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c | 15 ++++++++++++-
 2 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/openair1/PHY/NR_TRANSPORT/nr_dci_tools.c b/openair1/PHY/NR_TRANSPORT/nr_dci_tools.c
index b43687a8ec..f706f3fd20 100644
--- a/openair1/PHY/NR_TRANSPORT/nr_dci_tools.c
+++ b/openair1/PHY/NR_TRANSPORT/nr_dci_tools.c
@@ -47,7 +47,7 @@ void nr_fill_dci_and_dlsch(PHY_VARS_gNB *gNB,
 	nfapi_nr_config_request_t *cfg = &gNB->gNB_config;
 
   uint16_t N_RB = fp->initial_bwp_dl.N_RB;
-  uint8_t fsize = 0;
+  uint8_t fsize=0, pos=0;
 
   /// Payload generation
   switch(params_rel15->dci_format) {
@@ -59,15 +59,21 @@ void nr_fill_dci_and_dlsch(PHY_VARS_gNB *gNB,
           fsize = (int)ceil( log2( (N_RB*(N_RB+1))>>1 ) );
           for (int i=0; i<fsize; i++)
             *dci_pdu |= ((pdu_rel15->frequency_domain_assignment>>(fsize-i))&1)<<i;
+          pos += fsize;
+          // VRB to PRB mapping
+          *dci_pdu |= (pdu_rel15->vrb_to_prb_mapping&1)<<pos;
+          pos++;
           // Time domain assignment
           for (int i=0; i<4; i++)
-            *dci_pdu |= ((pdu_rel15->time_domain_assignment>>(4-i))&1)<<i;
+            *dci_pdu |= ((pdu_rel15->time_domain_assignment>>(4-i))&1)<<(pos+i);
+          pos += 4;
           //MCS
           for (int i=0; i<5; i++)
-            *dci_pdu |= ((pdu_rel15->mcs>>(5-i))&1)<<i;
+            *dci_pdu |= ((pdu_rel15->mcs>>(5-i))&1)<<(pos+i);
+          pos += 5;
           // TB scaling
           for (int i=0; i<2; i++)
-            *dci_pdu |= ((pdu_rel15->tb_scaling>>(2-i))&1)<<i;
+            *dci_pdu |= ((pdu_rel15->tb_scaling>>(2-i))&1)<<(pos+i);
           
           break;
 
@@ -78,15 +84,16 @@ void nr_fill_dci_and_dlsch(PHY_VARS_gNB *gNB,
       break;
   }
 
-  LOG_I(MAC, "DCI PDU: [0]->0x%08x \t [0]->0x%08x [1]->0x%08x \t [2]->0x%08x \t [3]->0x%08x\n",
+  LOG_I(PHY, "DCI PDU: [0]->0x%08x \t [1]->0x%08x \t [2]->0x%08x \t [3]->0x%08x\n",
               dci_pdu[0], dci_pdu[1], dci_pdu[2], dci_pdu[3]);
 
   /// rest of DCI alloc
   memcpy((void*)&dci_alloc->pdcch_params, (void*)params_rel15, sizeof(nfapi_nr_dl_config_pdcch_parameters_rel15_t));
-  dci_alloc->size = nr_get_dci_size(NFAPI_NR_DL_DCI_FORMAT_1_0,
-                        NFAPI_NR_RNTI_RA,
+  dci_alloc->size = nr_get_dci_size(dci_alloc->pdcch_params.dci_format,
+                        dci_alloc->pdcch_params.rnti_type,
                         &fp->initial_bwp_dl,
                         cfg);
+  LOG_I(PHY, "DCI type %d payload (size %d) generated\n", dci_alloc->pdcch_params.dci_format, dci_alloc->size);
   
   
 
diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
index bf3dd514b9..71f1e07e8c 100644
--- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
+++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
@@ -45,6 +45,8 @@ void nr_schedule_css_dlsch_phytest(module_id_t   module_idP,
   NR_COMMON_channels_t                *cc           = nr_mac->common_channels;
   nfapi_nr_dl_config_request_body_t   *dl_req;
   nfapi_nr_dl_config_request_pdu_t  *dl_config_pdu;
+  nfapi_tx_request_pdu_t            *TX_req;
+  uint16_t sfn_sf = frameP << 4 | subframeP;
 
   for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
     LOG_I(MAC, "Scheduling common search space DCI type 1 for CC_id %d\n",CC_id);
@@ -72,7 +74,7 @@ void nr_schedule_css_dlsch_phytest(module_id_t   module_idP,
     pdu_rel15->time_domain_assignment = 2;
     pdu_rel15->vrb_to_prb_mapping = 0;
     pdu_rel15->tb_scaling = 1;
-    LOG_I(MAC, "DCI type 1 payload: freq_alloc %d, time_alloc %d, vrb to prb %d, tb_scaling %d\n",
+    LOG_I(MAC, "[gNB scheduler phytest] DCI type 1 payload: freq_alloc %d, time_alloc %d, vrb to prb %d, tb_scaling %d\n",
                 pdu_rel15->frequency_domain_assignment,
                 pdu_rel15->time_domain_assignment,
                 pdu_rel15->vrb_to_prb_mapping,
@@ -99,6 +101,17 @@ void nr_schedule_css_dlsch_phytest(module_id_t   module_idP,
                 params_rel15->first_slot);
   dl_req->number_dci++;
   dl_req->number_pdu++;
+
+  TX_req = &nr_mac->TX_req[CC_id].tx_request_body.tx_pdu_list[nr_mac->TX_req[CC_id].tx_request_body.number_of_pdus];
+  TX_req->pdu_length = 6;
+  TX_req->pdu_index = nr_mac->pdu_index[CC_id]++;
+  TX_req->num_segments = 1;
+  TX_req->segments[0].segment_length = 8;
+  //TX_req->segments[0].segment_data = (uint8_t*)pdu_rel15;
+  nr_mac->TX_req[CC_id].tx_request_body.number_of_pdus++;
+  nr_mac->TX_req[CC_id].sfn_sf = sfn_sf;
+  nr_mac->TX_req[CC_id].tx_request_body.tl.tag = NFAPI_TX_REQUEST_BODY_TAG;
+  nr_mac->TX_req[CC_id].header.message_id = NFAPI_TX_REQUEST;
     
   }
 }
-- 
2.26.2