astyle --recursive --indent=spaces=2 --style=kr --indent-col1-comments --break-blocks --convert-tabs --max-code-length=200
This is done for better merging branch/LG_PRE_RELEASE_0.3 into trunk (same process is applied on this branch) git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7073 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
+111
-104
@@ -1,5 +1,5 @@
|
||||
/*******************************************************************************
|
||||
OpenAirInterface
|
||||
OpenAirInterface
|
||||
Copyright(c) 1999 - 2014 Eurecom
|
||||
|
||||
OpenAirInterface is free software: you can redistribute it and/or modify
|
||||
@@ -14,15 +14,15 @@
|
||||
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,
|
||||
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@eurecom.fr
|
||||
|
||||
|
||||
Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
|
||||
|
||||
*******************************************************************************/
|
||||
@@ -42,7 +42,8 @@
|
||||
#define FRAME_LENGTH_COMPLEX_SAMPLES (lte_frame_parms->samples_per_tti>>1)
|
||||
#define FRAME_LENGTH_BYTES (FRAME_LENGTH_COMPLEX_SAMPLES*sizeof(int))
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
|
||||
int i,l,aa,sector;
|
||||
double sigma2, sigma2_dB=0;
|
||||
@@ -89,7 +90,7 @@ int main(int argc, char **argv) {
|
||||
|
||||
if (argc==2)
|
||||
amp = atoi(argv[1]);
|
||||
else
|
||||
else
|
||||
amp = 1024;
|
||||
|
||||
// we normalize the tx power to 0dBm, assuming the amplitude of the signal is 1024
|
||||
@@ -143,13 +144,13 @@ int main(int argc, char **argv) {
|
||||
bzero(txdataF2[0],FRAME_LENGTH_BYTES);
|
||||
bzero(txdataF2[1],FRAME_LENGTH_BYTES);
|
||||
#endif
|
||||
|
||||
|
||||
s_re = malloc(2*sizeof(double*));
|
||||
s_im = malloc(2*sizeof(double*));
|
||||
r_re = malloc(2*sizeof(double*));
|
||||
r_im = malloc(2*sizeof(double*));
|
||||
|
||||
for (i=0;i<2;i++) {
|
||||
|
||||
for (i=0; i<2; i++) {
|
||||
|
||||
s_re[i] = malloc(FRAME_LENGTH_COMPLEX_SAMPLES*sizeof(double));
|
||||
bzero(s_re[i],FRAME_LENGTH_COMPLEX_SAMPLES*sizeof(double));
|
||||
@@ -161,20 +162,22 @@ int main(int argc, char **argv) {
|
||||
bzero(r_im[i],FRAME_LENGTH_COMPLEX_SAMPLES*sizeof(double));
|
||||
}
|
||||
|
||||
for (i=0;i<2;i++) {
|
||||
for (l=0;l<FRAME_LENGTH_COMPLEX_SAMPLES;l++) {
|
||||
for (i=0; i<2; i++) {
|
||||
for (l=0; l<FRAME_LENGTH_COMPLEX_SAMPLES; l++) {
|
||||
((short*) txdata[i])[2*l] = amp * cos(M_PI/2*l);
|
||||
((short*) txdata[i])[2*l+1] = amp * sin(M_PI/2*l);
|
||||
}
|
||||
}
|
||||
|
||||
tx_pwr = signal_energy(txdata[0],lte_frame_parms->samples_per_tti>>1);
|
||||
printf("tx_pwr (DAC in) %d dB for slot %d (subframe %d)\n",dB_fixed(tx_pwr),next_slot,next_slot>>1);
|
||||
|
||||
printf("tx_pwr (DAC in) %d dB for slot %d (subframe %d)\n",dB_fixed(tx_pwr),next_slot,next_slot>>1);
|
||||
|
||||
|
||||
|
||||
channel_length = (int) 11+2*BW*Td;
|
||||
|
||||
ch = (struct complex**) malloc(4 * sizeof(struct complex*));
|
||||
|
||||
for (i = 0; i<4; i++)
|
||||
ch[i] = (struct complex*) malloc(channel_length * sizeof(struct complex));
|
||||
|
||||
@@ -182,109 +185,112 @@ int main(int argc, char **argv) {
|
||||
set_taus_seed(0);
|
||||
|
||||
#ifdef RF
|
||||
tx_pwr = dac_fixed_gain(s_re,
|
||||
s_im,
|
||||
txdata,
|
||||
lte_frame_parms->nb_antennas_tx,
|
||||
lte_frame_parms->samples_per_tti>>1,
|
||||
14,
|
||||
18); //this should give 0dBm output level for input with amplitude 1024
|
||||
|
||||
printf("tx_pwr (DAC out) %f dB for slot %d (subframe %d)\n",10*log10(tx_pwr),next_slot,next_slot>>1);
|
||||
tx_pwr = dac_fixed_gain(s_re,
|
||||
s_im,
|
||||
txdata,
|
||||
lte_frame_parms->nb_antennas_tx,
|
||||
lte_frame_parms->samples_per_tti>>1,
|
||||
14,
|
||||
18); //this should give 0dBm output level for input with amplitude 1024
|
||||
|
||||
printf("tx_pwr (DAC out) %f dB for slot %d (subframe %d)\n",10*log10(tx_pwr),next_slot,next_slot>>1);
|
||||
#else
|
||||
|
||||
for (i=0;i<(lte_frame_parms->samples_per_tti>>1);i++) {
|
||||
for (aa=0;aa<lte_frame_parms->nb_antennas_tx;aa++) {
|
||||
s_re[aa][i] = ((double)(((short *)txdata[aa]))[(i<<1)]);
|
||||
s_im[aa][i] = ((double)(((short *)txdata[aa]))[(i<<1)+1]);
|
||||
}
|
||||
}
|
||||
for (i=0; i<(lte_frame_parms->samples_per_tti>>1); i++) {
|
||||
for (aa=0; aa<lte_frame_parms->nb_antennas_tx; aa++) {
|
||||
s_re[aa][i] = ((double)(((short *)txdata[aa]))[(i<<1)]);
|
||||
s_im[aa][i] = ((double)(((short *)txdata[aa]))[(i<<1)+1]);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// printf("channel for slot %d (subframe %d)\n",next_slot,next_slot>>1);
|
||||
multipath_channel(ch,s_re,s_im,r_re,r_im,
|
||||
amps,Td,BW,ricean_factor,aoa,
|
||||
lte_frame_parms->nb_antennas_tx,
|
||||
lte_frame_parms->nb_antennas_rx,
|
||||
lte_frame_parms->samples_per_tti>>1,
|
||||
channel_length,
|
||||
0,
|
||||
.9,
|
||||
(first_call == 1) ? 1 : 0);
|
||||
|
||||
if (first_call == 1)
|
||||
first_call = 0;
|
||||
// printf("channel for slot %d (subframe %d)\n",next_slot,next_slot>>1);
|
||||
multipath_channel(ch,s_re,s_im,r_re,r_im,
|
||||
amps,Td,BW,ricean_factor,aoa,
|
||||
lte_frame_parms->nb_antennas_tx,
|
||||
lte_frame_parms->nb_antennas_rx,
|
||||
lte_frame_parms->samples_per_tti>>1,
|
||||
channel_length,
|
||||
0,
|
||||
.9,
|
||||
(first_call == 1) ? 1 : 0);
|
||||
|
||||
if (first_call == 1)
|
||||
first_call = 0;
|
||||
|
||||
#ifdef RF
|
||||
|
||||
//path_loss_dB = 0;
|
||||
//path_loss = 1;
|
||||
|
||||
for (i=0;i<(lte_frame_parms->samples_per_tti>>1);i++) {
|
||||
for (aa=0;aa<lte_frame_parms->nb_antennas_rx;aa++) {
|
||||
r_re[aa][i]=r_re[aa][i]*sqrt(path_loss);
|
||||
r_im[aa][i]=r_im[aa][i]*sqrt(path_loss);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
rx_pwr = signal_energy_fp(r_re,r_im,lte_frame_parms->nb_antennas_rx,lte_frame_parms->samples_per_tti>>1,0);
|
||||
printf("rx_pwr (RF in) %f dB for slot %d (subframe %d)\n",10*log10(rx_pwr),next_slot,next_slot>>1);
|
||||
|
||||
rx_gain = target_rx_pwr_dB - 10*log10(rx_pwr);
|
||||
|
||||
// RF model
|
||||
rf_rx(r_re,
|
||||
r_im,
|
||||
NULL,
|
||||
NULL,
|
||||
0,
|
||||
lte_frame_parms->nb_antennas_rx,
|
||||
lte_frame_parms->samples_per_tti>>1,
|
||||
1.0/7.68e6 * 1e9, // sampling time (ns)
|
||||
0.0, // freq offset (Hz) (-20kHz..20kHz)
|
||||
0.0, // drift (Hz) NOT YET IMPLEMENTED
|
||||
nf, // noise_figure NOT YET IMPLEMENTED
|
||||
rx_gain-66.227, // rx gain (66.227 = 20*log10(pow2(11)) = gain from the adc that will be applied later)
|
||||
200, // IP3_dBm (dBm)
|
||||
&ip, // initial phase
|
||||
30.0e3, // pn_cutoff (kHz)
|
||||
-500.0, // pn_amp (dBc) default: 50
|
||||
0.0, // IQ imbalance (dB),
|
||||
0.0); // IQ phase imbalance (rad)
|
||||
//path_loss_dB = 0;
|
||||
//path_loss = 1;
|
||||
|
||||
rx_pwr = signal_energy_fp(r_re,r_im,lte_frame_parms->nb_antennas_rx,lte_frame_parms->samples_per_tti>>1,0);
|
||||
|
||||
printf("rx_pwr (ADC in) %f dB for slot %d (subframe %d)\n",10*log10(rx_pwr),next_slot,next_slot>>1);
|
||||
for (i=0; i<(lte_frame_parms->samples_per_tti>>1); i++) {
|
||||
for (aa=0; aa<lte_frame_parms->nb_antennas_rx; aa++) {
|
||||
r_re[aa][i]=r_re[aa][i]*sqrt(path_loss);
|
||||
r_im[aa][i]=r_im[aa][i]*sqrt(path_loss);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
rx_pwr = signal_energy_fp(r_re,r_im,lte_frame_parms->nb_antennas_rx,lte_frame_parms->samples_per_tti>>1,0);
|
||||
printf("rx_pwr (RF in) %f dB for slot %d (subframe %d)\n",10*log10(rx_pwr),next_slot,next_slot>>1);
|
||||
|
||||
rx_gain = target_rx_pwr_dB - 10*log10(rx_pwr);
|
||||
|
||||
// RF model
|
||||
rf_rx(r_re,
|
||||
r_im,
|
||||
NULL,
|
||||
NULL,
|
||||
0,
|
||||
lte_frame_parms->nb_antennas_rx,
|
||||
lte_frame_parms->samples_per_tti>>1,
|
||||
1.0/7.68e6 * 1e9, // sampling time (ns)
|
||||
0.0, // freq offset (Hz) (-20kHz..20kHz)
|
||||
0.0, // drift (Hz) NOT YET IMPLEMENTED
|
||||
nf, // noise_figure NOT YET IMPLEMENTED
|
||||
rx_gain-66.227, // rx gain (66.227 = 20*log10(pow2(11)) = gain from the adc that will be applied later)
|
||||
200, // IP3_dBm (dBm)
|
||||
&ip, // initial phase
|
||||
30.0e3, // pn_cutoff (kHz)
|
||||
-500.0, // pn_amp (dBc) default: 50
|
||||
0.0, // IQ imbalance (dB),
|
||||
0.0); // IQ phase imbalance (rad)
|
||||
|
||||
rx_pwr = signal_energy_fp(r_re,r_im,lte_frame_parms->nb_antennas_rx,lte_frame_parms->samples_per_tti>>1,0);
|
||||
|
||||
printf("rx_pwr (ADC in) %f dB for slot %d (subframe %d)\n",10*log10(rx_pwr),next_slot,next_slot>>1);
|
||||
#endif
|
||||
|
||||
#ifdef RF
|
||||
adc(r_re,
|
||||
r_im,
|
||||
0,
|
||||
slot_offset,
|
||||
rxdata,
|
||||
lte_frame_parms->nb_antennas_rx,
|
||||
lte_frame_parms->samples_per_tti>>1,
|
||||
12);
|
||||
|
||||
rx_pwr2 = signal_energy(rxdata[0]+slot_offset,lte_frame_parms->samples_per_tti>>1);
|
||||
|
||||
printf("rx_pwr (ADC out) %f dB (%d) for slot %d (subframe %d)\n",10*log10((double)rx_pwr2),rx_pwr2,next_slot,next_slot>>1);
|
||||
adc(r_re,
|
||||
r_im,
|
||||
0,
|
||||
slot_offset,
|
||||
rxdata,
|
||||
lte_frame_parms->nb_antennas_rx,
|
||||
lte_frame_parms->samples_per_tti>>1,
|
||||
12);
|
||||
|
||||
rx_pwr2 = signal_energy(rxdata[0]+slot_offset,lte_frame_parms->samples_per_tti>>1);
|
||||
|
||||
printf("rx_pwr (ADC out) %f dB (%d) for slot %d (subframe %d)\n",10*log10((double)rx_pwr2),rx_pwr2,next_slot,next_slot>>1);
|
||||
|
||||
#else
|
||||
for (i=0; i<(lte_frame_parms->samples_per_tti>>1); i++) {
|
||||
for (aa=0;aa<lte_frame_parms->nb_antennas_rx;aa++) {
|
||||
((short*) rxdata[aa])[2*slot_offset + (2*i)] = (short) ((r_re[aa][i]) + sqrt(sigma2/2)*gaussdouble(0.0,1.0));
|
||||
((short*) rxdata[aa])[2*slot_offset + (2*i)+1] = (short) ((r_im[aa][i]) + sqrt(sigma2/2)*gaussdouble(0.0,1.0));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
for (i=0; i<(lte_frame_parms->samples_per_tti>>1); i++) {
|
||||
for (aa=0; aa<lte_frame_parms->nb_antennas_rx; aa++) {
|
||||
((short*) rxdata[aa])[2*slot_offset + (2*i)] = (short) ((r_re[aa][i]) + sqrt(sigma2/2)*gaussdouble(0.0,1.0));
|
||||
((short*) rxdata[aa])[2*slot_offset + (2*i)+1] = (short) ((r_im[aa][i]) + sqrt(sigma2/2)*gaussdouble(0.0,1.0));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
write_output("rxsig0.m","rxs0",rxdata[0],lte_frame_parms->samples_per_tti>>1,1,1);
|
||||
write_output("rxsig1.m","rxs1",rxdata[1],lte_frame_parms->samples_per_tti>>1,1,1);
|
||||
|
||||
write_output("rxsig0.m","rxs0",rxdata[0],lte_frame_parms->samples_per_tti>>1,1,1);
|
||||
write_output("rxsig1.m","rxs1",rxdata[1],lte_frame_parms->samples_per_tti>>1,1,1);
|
||||
|
||||
|
||||
#ifdef IFFT_FPGA
|
||||
free(txdataF2[0]);
|
||||
@@ -296,18 +302,19 @@ int main(int argc, char **argv) {
|
||||
free(rxdata[0]);
|
||||
free(rxdata[1]);
|
||||
free(rxdata);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
for (i=0;i<2;i++) {
|
||||
for (i=0; i<2; i++) {
|
||||
free(s_re[i]);
|
||||
free(s_im[i]);
|
||||
free(r_re[i]);
|
||||
free(r_im[i]);
|
||||
}
|
||||
|
||||
free(s_re);
|
||||
free(s_im);
|
||||
free(r_re);
|
||||
free(r_im);
|
||||
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user