From 7b3fe853584067d5bcae80752271a17466f83675 Mon Sep 17 00:00:00 2001
From: Sandeep Kumar <ee13b1025@iith.ac.in>
Date: Fri, 3 Jun 2016 16:23:22 +0200
Subject: [PATCH] fixed file name, updated the IF4 frame structure, added dummy
 functions for frame generation

---
 openair1/PHY/LTE_TRANSPORT/if4_tools.c | 114 +++++++++++++++++++++++++
 openair1/PHY/LTE_TRANSPORT/if4_tools.h |  65 +++++++++-----
 openair1/PHY/LTE_TRANSPORT/if4tools.c  |  47 ----------
 3 files changed, 160 insertions(+), 66 deletions(-)
 create mode 100644 openair1/PHY/LTE_TRANSPORT/if4_tools.c
 delete mode 100644 openair1/PHY/LTE_TRANSPORT/if4tools.c

diff --git a/openair1/PHY/LTE_TRANSPORT/if4_tools.c b/openair1/PHY/LTE_TRANSPORT/if4_tools.c
new file mode 100644
index 0000000000..a3e6d75ac8
--- /dev/null
+++ b/openair1/PHY/LTE_TRANSPORT/if4_tools.c
@@ -0,0 +1,114 @@
+/*******************************************************************************
+    OpenAirInterface
+    Copyright(c) 1999 - 2014 Eurecom
+
+    OpenAirInterface is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+
+    OpenAirInterface is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenAirInterface.The full GNU General Public License is
+   included in this distribution in the file called "COPYING". If not,
+   see <http://www.gnu.org/licenses/>.
+
+  Contact Information
+  OpenAirInterface Admin: openair_admin@eurecom.fr
+  OpenAirInterface Tech : openair_tech@eurecom.fr
+  OpenAirInterface Dev  : openair4g-devel@lists.eurecom.fr
+
+  Address      : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
+
+ *******************************************************************************/
+
+/*! \file PHY/LTE_TRANSPORT/if4_tools.c
+* \brief 
+* \author Mauricio Gunther, Raymond Knopp, S. Sandeep Kumar
+* \date 2016
+* \version 0.1
+* \company Eurecom
+* \email: knopp@eurecom.fr, ee13b1025@iith.ac.in
+* \note
+* \warning
+*/
+
+#include "PHY/LTE_TRANSPORT/if4_tools.h"
+
+/*
+typedef struct data_block_type {
+    
+} data_block;
+*/
+
+/*
+void allocate_data_block(long *data_block ,int length){
+	data_block = malloc(length*sizeof(long));
+}
+*/
+
+void send_IF4(PHY_VARS_eNB *eNB, int subframe){
+	eNB_proc_t *proc = &eNB->proc;
+	//int frame=proc->frame_tx;
+	//int subframe=proc->subframe_tx;
+
+	LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
+	int i,j;
+
+	float *data_block = malloc(length*sizeof(long));
+
+	
+	// find number of consecutive non zero in values in symbol
+	// NrOfNonZeroValues
+	
+	// how many values does the atan function output?
+	
+	for(i = 0; i <= fp->symbols_per_tti; i++){
+		for(j = 0; j < NrOfNonZeroValues; j=j+2){  
+			
+			symbol = eNB->common_vars.txdataF[0][0 /*antenna number*/][subframe*fp->ofdm_symbol_size*(fp->symbols_per_tti)]
+			
+			data_block[j] = Atan(symbol[fp->ofmd_symbol_size - NrOfNonZeroValues + j -1])<<16 + Atan(symbol[fp->ofmd_symbol_size - NrOfNonZeroValues + j]);
+			data_block[j+NrOfNonZeroValues] = Atan(subframe[i][j+1])<<16 + Atan(subframe[i][j+2]);
+			// use memset?
+		}
+		
+	}
+
+/*
+memset(&eNB->common_vars.txdataF[0][aa][subframe*fp->ofdm_symbol_size*(fp->symbols_per_tti)],
+             0,fp->ofdm_symbol_size*(fp->symbols_per_tti)*sizeof(int32_t));
+    }
+  */  
+    
+}
+
+void recv_IF4( ) {
+  
+}
+
+IF4_dl_packet gen_IF4_dl_packet(  ) {
+  
+  IF4_dl_packet dl_packet;
+  
+  return dl_packet;
+}
+
+IF4_ul_packet gen_IF4_ul_packet(  ) {
+  
+  IF4_ul_packet ul_packet;
+  
+  return ul_packet;
+}
+
+IF4_prach_packet gen_IF4_prach_packet(  ) {
+  
+  IF4_prach_packet prach_packet;
+  
+  return prach_packet;
+} 
diff --git a/openair1/PHY/LTE_TRANSPORT/if4_tools.h b/openair1/PHY/LTE_TRANSPORT/if4_tools.h
index 977e5f36c5..363dbf444d 100644
--- a/openair1/PHY/LTE_TRANSPORT/if4_tools.h
+++ b/openair1/PHY/LTE_TRANSPORT/if4_tools.h
@@ -56,7 +56,15 @@ struct IF4_frame_status {
   uint32_t rsvd:2;    
 };
 
-/// IF4 PRACH Configuration (32 bits)
+/// IF4 Antenna Gain
+struct IF4_gain {
+  /// Reserved 
+  uint32_t rsvd:10;
+  /// FFT Exponent Output
+  uint32_t exponent:6;  
+};  
+
+/// IF4 LTE PRACH Configuration (32 bits)
 struct IF4_lte_prach_conf {
   /// Reserved
   uint32_t rsvd:3;
@@ -69,14 +77,6 @@ struct IF4_lte_prach_conf {
   /// FFT Exponent Output
   uint32_t exponent:6;  
 };
-
-/// IF4 Antenna Gain
-struct IF4_gain {
-  /// Reserved 
-  uint32_t rsvd:10;
-  /// FFT Exponent Output
-  uint32_t exponent:6;  
-};  
   
 struct IF4_dl_packet {
   /// Destination Address
@@ -84,17 +84,17 @@ struct IF4_dl_packet {
   /// Source Address
   
   /// Type
-  
+  uint16_t type; 
   /// Sub-Type
-  
+  uint16_t sub_type;
   /// Reserved
-  
+  uint32_t rsvd;
   /// Frame Status
-  
+  IF4_frame_status frame_status;
   /// Data Blocks
   
   /// Frame Check Sequence
-   
+  uint32_t fcs; 
 };
 
 struct IF4_ul_packet {
@@ -103,22 +103,29 @@ struct IF4_ul_packet {
   /// Source Address
   
   /// Type
-  
+  uint16_t type;
   /// Sub-Type
-  
+  uint16_t sub_type;
   /// Reserved
-  
+  uint32_t rsvd;
   /// Frame Status
-  
+  IF4_frame_status frame_status;
   /// Gain 0
+  IF4_gain gain0;
   /// Gain 1
+  IF4_gain gain1;
   /// Gain 2
+  IF4_gain gain2;
   /// Gain 3
+  IF4_gain gain3;
   /// Gain 4
+  IF4_gain gain4;
   /// Gain 5
+  IF4_gain gain5;
   /// Gain 6
+  IF4_gain gain6;
   /// Gain 7
-
+  IF4_gain gain7;
   /// Data Blocks
   
   /// Frame Check Sequence
@@ -126,10 +133,30 @@ struct IF4_ul_packet {
 };
 
 struct IF4_prach_packet {
+  /// Destination Address 
   
+  /// Source Address
   
+  /// Type
+  uint16_t type;
+  /// Sub-Type
+  uint16_t sub_type;
+  /// Reserved
+  uint32_t rsvd;
+  /// LTE Prach Configuration
+  IF4_lte_prach_conf prach_conf;
+  /// Prach Data Block (one antenna)
+  
+  /// Frame Check Sequence
+  uint32_t fcs;
 };
 
+IF4_dl_packet gen_IF4_dl_packet();
+
+IF4_ul_packet gen_IF4_ul_packet();
+
+IF4_prach_packet gen_IF4_prach_packet();
+
 void send_IF4(PHY_VARS_eNB *eNB, int subframe);
 
 void recv_IF4(PHY_VARS_eNB *eNB, int subframe);
diff --git a/openair1/PHY/LTE_TRANSPORT/if4tools.c b/openair1/PHY/LTE_TRANSPORT/if4tools.c
deleted file mode 100644
index 70e598e2a1..0000000000
--- a/openair1/PHY/LTE_TRANSPORT/if4tools.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-typedef struct data_block_type {
-    
-} data_block;
-*/
-
-/*
-void allocate_data_block(long *data_block ,int length){
-	data_block = malloc(length*sizeof(long));
-}
-*/
-
-void send_IF4(PHY_VARS_eNB eNB, int subframe){
-	eNB_proc_t *proc = &eNB->proc;
-	//int frame=proc->frame_tx;
-	//int subframe=proc->subframe_tx;
-
-	LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
-	int i,j;
-
-	float *data_block = malloc(length*sizeof(long));
-
-	
-	// find number of consecutive non zero in values in symbol
-	// NrOfNonZeroValues
-	
-	// how many values does the atan function output?
-	
-	for(i = 0; i <= fp->symbols_per_tti; i++){
-		for(j = 0; j < NrOfNonZeroValues; j=j+2){  
-			
-			symbol = eNB->common_vars.txdataF[0][0 /*antenna number*/][subframe*fp->ofdm_symbol_size*(fp->symbols_per_tti)]
-			
-			data_block[j] = Atan(symbol[fp->ofmd_symbol_size - NrOfNonZeroValues + j -1])<<16 + Atan(symbol[fp->ofmd_symbol_size - NrOfNonZeroValues + j]);
-			data_block[j+NrOfNonZeroValues] = Atan(subframe[i][j+1])<<16 + Atan(subframe[i][j+2]);
-			// use memset?
-		}
-		
-	}
-
-/*
-memset(&eNB->common_vars.txdataF[0][aa][subframe*fp->ofdm_symbol_size*(fp->symbols_per_tti)],
-             0,fp->ofdm_symbol_size*(fp->symbols_per_tti)*sizeof(int32_t));
-    }
-  */  
-    
-}
-- 
GitLab