diff --git a/openair1/PHY/LTE_TRANSPORT/dci.c b/openair1/PHY/LTE_TRANSPORT/dci.c index e9af45d613479b56943baa3415fb4c912ac0d4a7..72b297df2a24bb5220921f0a5b53612ee25b9986 100644 --- a/openair1/PHY/LTE_TRANSPORT/dci.c +++ b/openair1/PHY/LTE_TRANSPORT/dci.c @@ -2065,9 +2065,10 @@ u8 generate_dci_top(u8 num_ue_spec_dci, y[0] = &yseq0[0]; y[1] = &yseq1[0]; - //memset(e,0,DCI_BITS_MAX); // reset all bits to <NIL>, here we set <NIL> elements as 2 - memset(e, 2, DCI_BITS_MAX); + //memset(e, 2, DCI_BITS_MAX); + // here we interpred NIL as a random QPSK sequence. That makes power estimation easier. + for (i=0;i<DCI_BITS_MAX;i++) e[i]=taus()&1; e_ptr = e; // generate DCIs in order of decreasing aggregation level, then common/ue spec diff --git a/openair1/PHY/extern.h b/openair1/PHY/extern.h index 07078d71ec2245428352c98fd713ca0ee4aa0cd1..cae887ad0ad87a7757a54806fb3bbd6d8498ff58 100755 --- a/openair1/PHY/extern.h +++ b/openair1/PHY/extern.h @@ -57,6 +57,7 @@ extern char mode_string[4][20]; #ifndef OPENAIR2 extern unsigned char NB_eNB_INST; extern unsigned char NB_UE_INST; +extern unsigned char NB_RN_INST; #endif extern int flag_LA; diff --git a/openair1/SIMULATION/LTE_PHY/openair_hw.c b/openair1/SIMULATION/LTE_PHY/openair_hw.c deleted file mode 100644 index c693dde3279a63d89907c2f521b35a02b4b2d709..0000000000000000000000000000000000000000 --- a/openair1/SIMULATION/LTE_PHY/openair_hw.c +++ /dev/null @@ -1,182 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <unistd.h> -#include <execinfo.h> -#include <signal.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <sys/ioctl.h> -#include <sys/mman.h> - -#include "SIMULATION/TOOLS/defs.h" -#include "PHY/types.h" -#include "PHY/defs.h" -#include "PHY/extern.h" -#ifdef IFFT_FPGA -#include "PHY/LTE_REFSIG/mod_table.h" -#endif - -#include "ARCH/CBMIMO1/DEVICE_DRIVER/cbmimo1_device.h" -#include "ARCH/CBMIMO1/DEVICE_DRIVER/defs.h" -#include "ARCH/COMMON/defs.h" -//#include "ARCH/CBMIMO1/DEVICE_DRIVER/extern.h" -//#include "SCHED/defs.h" -//#include "SCHED/extern.h" -//#include "LAYER2/MAC/extern.h" - - -TX_RX_VARS dummy_tx_rx_vars; -unsigned int bigphys_top; -unsigned int mem_base; - - -int setup_oai_hw(LTE_DL_FRAME_PARMS *frame_parms) { - - int i; - int openair_fd,fc; - - - printf("Setting frequency to %d,%d,%d,%d Hz, Gain to %d,%d,%d,%d dB\n", - frame_parms->carrier_freq[0],frame_parms->carrier_freq[1],frame_parms->carrier_freq[2],frame_parms->carrier_freq[3], - frame_parms->rxgain[0],frame_parms->rxgain[1],frame_parms->rxgain[2],frame_parms->rxgain[3]); - - - fc = 0; - - printf("Opening /dev/openair0\n"); - if ((openair_fd = open("/dev/openair0", O_RDWR)) <0) { - fprintf(stderr,"Error %d opening /dev/openair0\n",openair_fd); - exit(-1); - } - - - ioctl(openair_fd,openair_DUMP_CONFIG,frame_parms); - sleep(1); - - - // ioctl(openair_fd,openair_GET_BUFFER,(void *)&fc); - ioctl(openair_fd,openair_GET_VARS,&dummy_tx_rx_vars); - ioctl(openair_fd,openair_GET_BIGPHYSTOP,(void *)&bigphys_top); - - if (dummy_tx_rx_vars.TX_DMA_BUFFER[0]==NULL) { - printf("pci_buffers not allocated\n"); - close(openair_fd); - exit(-1); - } - - printf("BIGPHYS top 0x%x\n",bigphys_top); - printf("RX_DMA_BUFFER[0] %p\n",dummy_tx_rx_vars.RX_DMA_BUFFER[0]); - printf("TX_DMA_BUFFER[0] %p\n",dummy_tx_rx_vars.TX_DMA_BUFFER[0]); - - mem_base = (unsigned int) mmap(0, - BIGPHYS_NUMPAGES*4096, - PROT_READ|PROT_WRITE, - MAP_SHARED, //|MAP_FIXED,//MAP_SHARED, - openair_fd, - 0); - - if (mem_base != -1) - msg("MEM base= 0x%x\n",mem_base); - else { - msg("Could not map physical memory\n"); - close(openair_fd); - exit(-1); - } - - return(openair_fd); - -} - -#ifdef OPENAIR_LTE -void setup_ue_buffers(PHY_VARS_UE *phy_vars_ue, LTE_DL_FRAME_PARMS *frame_parms, int carrier) { - - int i; - if (phy_vars_ue) { - - if ((frame_parms->nb_antennas_rx>1) && (carrier>0)) { - printf("RX antennas > 1 and carrier > 0 not possible\n"); - exit(-1); - } - - if ((frame_parms->nb_antennas_tx>1) && (carrier>0)) { - printf("TX antennas > 1 and carrier > 0 not possible\n"); - exit(-1); - } - - // replace RX signal buffers with mmaped HW versions - for (i=0;i<frame_parms->nb_antennas_rx;i++) { - free(phy_vars_ue->lte_ue_common_vars.rxdata[i]); - phy_vars_ue->lte_ue_common_vars.rxdata[i] = (s32*)((int)dummy_tx_rx_vars.RX_DMA_BUFFER[i+carrier]-bigphys_top+mem_base); - printf("rxdata[%d] @ %p\n",i,phy_vars_ue->lte_ue_common_vars.rxdata[i]); - } - for (i=0;i<frame_parms->nb_antennas_tx;i++) { - free(phy_vars_ue->lte_ue_common_vars.txdata[i]); - phy_vars_ue->lte_ue_common_vars.txdata[i] = (s32*)((int)dummy_tx_rx_vars.TX_DMA_BUFFER[i+carrier]-bigphys_top+mem_base); - printf("txdata[%d] @ %p\n",i,phy_vars_ue->lte_ue_common_vars.txdata[i]); - } - } -} - -void setup_eNB_buffers(PHY_VARS_eNB *phy_vars_eNB, LTE_DL_FRAME_PARMS *frame_parms, int carrier) { - - int i,j; - - if (phy_vars_eNB) { - - if ((frame_parms->nb_antennas_rx>1) && (carrier>0)) { - printf("RX antennas > 1 and carrier > 0 not possible\n"); - exit(-1); - } - - if ((frame_parms->nb_antennas_tx>1) && (carrier>0)) { - printf("TX antennas > 1 and carrier > 0 not possible\n"); - exit(-1); - } - - // replace RX signal buffers with mmaped HW versions - for (i=0;i<frame_parms->nb_antennas_rx;i++) { - free(phy_vars_eNB->lte_eNB_common_vars.rxdata[0][i]); - phy_vars_eNB->lte_eNB_common_vars.rxdata[0][i] = (s32*)((int)dummy_tx_rx_vars.RX_DMA_BUFFER[i+carrier]-bigphys_top+mem_base); - printf("rxdata[%d] @ %p\n",i,phy_vars_eNB->lte_eNB_common_vars.rxdata[0][i]); - for (j=0;j<16;j++) { - printf("rxbuffer %d: %x\n",j,phy_vars_eNB->lte_eNB_common_vars.rxdata[0][i][j]); - phy_vars_eNB->lte_eNB_common_vars.rxdata[0][i][j] = 16-j; - } - } - for (i=0;i<frame_parms->nb_antennas_tx;i++) { - free(phy_vars_eNB->lte_eNB_common_vars.txdata[0][i]); - phy_vars_eNB->lte_eNB_common_vars.txdata[0][i] = (s32*)((int)dummy_tx_rx_vars.TX_DMA_BUFFER[i+carrier]-bigphys_top+mem_base); - printf("txdata[%d] @ %p\n",i,phy_vars_eNB->lte_eNB_common_vars.txdata[0][i]); - for (j=0;j<16;j++) { - printf("txbuffer %d: %x\n",j,phy_vars_eNB->lte_eNB_common_vars.txdata[0][i][j]); - phy_vars_eNB->lte_eNB_common_vars.txdata[0][i][j] = 16-j; - } - // msync(openair_fd); - } - } - -} -#endif - -#ifdef OPENAIR_ITS - -void setup_dot11_buffers(s32 **rxdata,s32 **txdata,int antenna_index) { - int i; - - printf("rxdata %p,txdata %p : Antenna %d\n",rxdata,txdata,antenna_index); - *rxdata = (s32*)((int)dummy_tx_rx_vars.RX_DMA_BUFFER[antenna_index]-bigphys_top+mem_base); - printf("rxdata @ %p\n",*rxdata); - *txdata = (s32*)((int)dummy_tx_rx_vars.TX_DMA_BUFFER[antenna_index]-bigphys_top+mem_base); - printf("txdata @ %p\n",*txdata); - - for (i=0;i<76800;i++) { - if (i<1024) - ((uint32_t *)*txdata)[i] = 0x0; - else - ((uint32_t *)*txdata)[i] = 0x00010001; - } -} -#endif diff --git a/openair1/SIMULATION/LTE_PHY/openair_hw.h b/openair1/SIMULATION/LTE_PHY/openair_hw.h deleted file mode 100644 index b6b204fef76e21d648cd08fcefb78fa1d824c9f9..0000000000000000000000000000000000000000 --- a/openair1/SIMULATION/LTE_PHY/openair_hw.h +++ /dev/null @@ -1,14 +0,0 @@ -#include "PHY/defs.h" - -#ifdef OPENAIR_LTE -int setup_oai_hw(LTE_DL_FRAME_PARMS *frame_parms); -void setup_ue_buffers(PHY_VARS_UE *phy_vars_ue, LTE_DL_FRAME_PARMS *frame_parms, int carrier); -void setup_eNB_buffers(PHY_VARS_eNB *phy_vars_eNB, LTE_DL_FRAME_PARMS *frame_parms); -#endif - -#ifdef OPENAIR_ITS -int setup_oai_hw(); -void setup_dot11_buffers(s32 **rxdata,s32 **txdata,int antenna_index); - - -#endif diff --git a/openair1/SIMULATION/RF/dac.c b/openair1/SIMULATION/RF/dac.c index 2b0e96d940b0e09869222e66d4e27118ef158f50..8c2df5febf02a2faf8c78981c594aa4cf9746b6e 100755 --- a/openair1/SIMULATION/RF/dac.c +++ b/openair1/SIMULATION/RF/dac.c @@ -64,14 +64,13 @@ double dac_fixed_gain(double **s_re, int aa; double amp,amp1; - amp = pow(10.0,.05*txpwr_dBm); - amp = amp/sqrt(nb_tx_antennas); //this is amp per tx antenna + amp = pow(10.0,.05*txpwr_dBm)/sqrt(nb_tx_antennas); //this is amp per tx antenna - amp1 = sqrt((double)signal_energy((s32*)&input[0][input_offset_meas],length_meas)); - if (nb_tx_antennas>1) { - amp1 += sqrt((double)signal_energy((s32*)&input[1][input_offset_meas],length_meas)); - amp1/=2; + amp1 = 0; + for (aa=0;aa<nb_tx_antennas;aa++) { + amp1 += sqrt((double)signal_energy((s32*)&input[aa][input_offset_meas],length_meas) * (512.0/300.0)); } + amp1/=nb_tx_antennas; //printf("UL: amp1 %f dB (%d,%d), tx_power %f\n",20*log10(amp1),input_offset,input_offset_meas,txpwr_dBm); diff --git a/targets/SIMU/USER/Makefile b/targets/SIMU/USER/Makefile index e00c0a92904f3fef85c774b9dcfff73b0ae03f7d..d93129fd56da216a0d2c4756bf0a818a864aaefa 100644 --- a/targets/SIMU/USER/Makefile +++ b/targets/SIMU/USER/Makefile @@ -4,7 +4,7 @@ include Makerules CPUFLAGS = -mmmx -msse -msse2 -msse4.1 -march=native # FORCE ssse3 for compilation of openair on User Mode Linux CPUFLAGS += $(shell if grep --silent ssse3 /proc/cpuinfo ; then echo "-mssse3" ; else if grep --silent User\ Mode\ Linux /proc/cpuinfo ; then echo "-mssse3" ; else echo ""; fi; fi) -CPUFLAGS += $(shell if grep --silent sse4 /proc/cpuinfo ; then echo "-msse4" ; else echo ""; fi) +CPUFLAGS += $(shell if grep --silent -w sse4 /proc/cpuinfo ; then echo "-msse4" ; else echo ""; fi) linux = $(shell if [ `uname` = "Linux" ] ; then echo "1" ; else echo "0" ; fi) COMMON_UTILS_DIR = $(OPENAIR_HOME)/common/utils @@ -20,7 +20,7 @@ SCTP_DIR = $(OPENAIR_HOME)/openair-cn/SCTP export S1AP_DIR export COMMON_UTILS_DIR -CFLAGS = -Wall -fno-strict-aliasing -DUSER_MODE -DNB_ANTENNAS_RX=2 -DNB_ANTENNAS_TXRX=2 -DNB_ANTENNAS_TX=2 -g -ggdb $(CPUFLAGS) -I/usr/include/X11 #-Wno-packed-bitfield-compat +CFLAGS = -O2 -Wall -fno-strict-aliasing -DUSER_MODE -DNB_ANTENNAS_RX=2 -DNB_ANTENNAS_TXRX=2 -DNB_ANTENNAS_TX=2 -g -ggdb $(CPUFLAGS) -I/usr/include/X11 #-Wno-packed-bitfield-compat ifdef ENABLE_ITTI CFLAGS += -DENABLE_ITTI @@ -418,6 +418,9 @@ rrm_std_cellular: cleanall: clean cleanasn1 @if [ -d $(S1AP_DIR) ];then $(MAKE) -C $(S1AP_DIR) -f Makefile.eNB cleanall; fi +cleanalmostall: clean + rm -f $(ASN1_MSG_OBJS1) + clean: @$(MAKE) -C $(LFDS_DIR) -f makefile.linux clean @$(RM_F_V) oaisim @@ -458,6 +461,9 @@ cleancell: @$(RM_F_V) $(OPENAIR2_DIR)/NAS/SIMU_CELLULAR/*.o @$(RM_F_V) $(OPENAIR2_DIR)/NAS/SIMU_CELLULAR/*.d +cleanlfds: + $(MAKE) -C $(LFDS_DIR) -f makefile.linux clean + print: # @echo $(cygwin) @echo "OBJ " $(OBJ) diff --git a/targets/SIMU/USER/oaisim.c b/targets/SIMU/USER/oaisim.c index 3a86f6e57b2883d98792429d801c1cb75365e721..2856247826610e6957d70bfe656d40bb25ed17bf 100644 --- a/targets/SIMU/USER/oaisim.c +++ b/targets/SIMU/USER/oaisim.c @@ -546,11 +546,13 @@ void *l2l1_task(void *args_p) { EMU, "PHY procedures eNB %d for frame %d, slot %d (subframe TX %d, RX %d) TDD %d/%d Nid_cell %d\n", eNB_id, frame, slot, next_slot >> 1, last_slot>>1, PHY_vars_eNB_g[eNB_id]->lte_frame_parms.frame_type, PHY_vars_eNB_g[eNB_id]->lte_frame_parms.tdd_config, PHY_vars_eNB_g[eNB_id]->lte_frame_parms.Nid_cell); +#ifdef OPENAIR2 //Appliation: traffic gen update_otg_eNB (eNB_id, oai_emulation.info.time_ms); //IP/OTG to PDCP and PDCP to IP operation pdcp_run (frame, 1, 0, eNB_id); //PHY_vars_eNB_g[eNB_id]->Mod_id +#endif // PHY_vars_eNB_g[eNB_id]->frame = frame; phy_procedures_eNB_lte (last_slot, next_slot, PHY_vars_eNB_g[eNB_id], abstraction_flag, no_relay, NULL); @@ -594,11 +596,13 @@ void *l2l1_task(void *args_p) { if (frame > 0) { PHY_vars_UE_g[UE_id]->frame = frame; +#ifdef OPENAIR2 //Application update_otg_UE (UE_id, oai_emulation.info.time_ms); //Access layer pdcp_run (frame, 0, UE_id, 0); +#endif phy_procedures_UE_lte (last_slot, next_slot, PHY_vars_UE_g[UE_id], 0, abstraction_flag, normal_txrx, no_relay, NULL); diff --git a/targets/SIMU/USER/oaisim_functions.c b/targets/SIMU/USER/oaisim_functions.c index d7e113cc1371dc12d0c1911afff89d596b36be66..e40010110b29e3bf3936a148266c5f00979a2059 100644 --- a/targets/SIMU/USER/oaisim_functions.c +++ b/targets/SIMU/USER/oaisim_functions.c @@ -446,7 +446,7 @@ void check_and_adjust_params() { NB_eNB_INST = oai_emulation.info.nb_enb_local + oai_emulation.info.nb_enb_remote; NB_RN_INST = oai_emulation.info.nb_rn_local + oai_emulation.info.nb_rn_remote; -#if defined(ENABLE_PDCP_NETLINK_FIFO) +#if defined(ENABLE_PDCP_NETLINK_FIFO) && defined(OPENAIR2) pdcp_netlink_init(); #endif @@ -471,6 +471,7 @@ void check_and_adjust_params() { } +#ifdef OPENAIR2 void init_omv() { if (oai_emulation.info.omv_enabled == 1) { @@ -506,6 +507,7 @@ if(close( pfd[0] ) == -1 ) // we close the write desc. perror("close on read\n" ); } } +#endif void init_seed(u8 set_seed) { @@ -804,8 +806,9 @@ void update_ocm() { } } +#ifdef OPENAIR2 void update_otg_eNB(int module_id, unsigned int ctime) { -#if defined(USER_MODE) && defined(OAI_EMU) +#if defined(USER_MODE) && defined(OAI_EMU) if (oai_emulation.info.otg_enabled ==1 ) { int dst_id, app_id; @@ -980,6 +983,7 @@ void update_otg_UE(int UE_id, unsigned int ctime) { } #endif } +#endif int init_slot_isr(void) {