From 61df6257037753bcad58192194c9dbc7868cd363 Mon Sep 17 00:00:00 2001 From: ISIP CS/NCTU Date: Thu, 9 Aug 2018 11:30:44 +0200 Subject: [PATCH] Replace beamforming.c --- openair1/PHY/MODULATION/beamforming.c | 60 +++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/openair1/PHY/MODULATION/beamforming.c b/openair1/PHY/MODULATION/beamforming.c index 9b1563e4f5..901f3a1f01 100644 --- a/openair1/PHY/MODULATION/beamforming.c +++ b/openair1/PHY/MODULATION/beamforming.c @@ -89,3 +89,63 @@ int beam_precoding(int32_t **txdataF, } return 0; } + +// fdragon +int beam_precoding_one_eNB(int32_t **txdataF, + int32_t **txdataF_BF, + int32_t ***beam_weights, + int subframe, + int nb_antenna_ports, + int nb_tx, // total physical antenna + LTE_DL_FRAME_PARMS *frame_parms + ) +{ + int p, re, symbol, aa; // loop index + int re_offset; + int ofdm_symbol_size = frame_parms->ofdm_symbol_size; + int symbols_per_tti = frame_parms->symbols_per_tti; + int nb_antenna_ports_eNB = frame_parms->nb_antenna_ports_eNB; // logic antenna ports + + + re_offset = ofdm_symbol_size*symbols_per_tti*subframe; + + + // txdataF_BF[aa][re] = sum(beam_weghts[p][aa][re]*txdataF[p][re]), p=0~nb_antenna_ports-1 + // real part and image part need to compute separately + + for (aa=0; aa>15); + ((int16_t*)&txdataF_BF[aa][re])[0] -= (int16_t)((((int16_t*)&txdataF[p][re+symbol*ofdm_symbol_size+re_offset])[1]*((int16_t*)&beam_weights[p][aa][re])[1])>>15); + ((int16_t*)&txdataF_BF[aa][re])[1] += (int16_t)((((int16_t*)&txdataF[p][re+symbol*ofdm_symbol_size+re_offset])[0]*((int16_t*)&beam_weights[p][aa][re])[1])>>15); + ((int16_t*)&txdataF_BF[aa][re])[1] += (int16_t)((((int16_t*)&txdataF[p][re+symbol*ofdm_symbol_size+re_offset])[1]*((int16_t*)&beam_weights[p][aa][re])[0])>>15); + } + */ + } + } + } + } + + + + + + + + return 0; +} \ No newline at end of file