Skip to content
Snippets Groups Projects
Commit 9f4a8491 authored by Florian Kaltenberger's avatar Florian Kaltenberger
Browse files

added prototypes to compute beamforming weights

parent e3dbfa3d
No related branches found
No related tags found
No related merge requests found
......@@ -976,6 +976,7 @@ set(PHY_SRC
${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_ul.c
${OPENAIR1_DIR}/PHY/MODULATION/ul_7_5_kHz.c
${OPENAIR1_DIR}/PHY/MODULATION/beamforming.c
${OPENAIR1_DIR}/PHY/MODULATION/compute_bf_weights.c
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/freq_equalization.c
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_sync_time.c
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_sync_timefreq.c
......
......@@ -120,4 +120,3 @@ int beam_precoding(int32_t **txdataF,
}
}
}
#include <stdio.h>
#include <stdint.h>
#include "PHY/impl_defs_lte.h"
int f_read(char *calibF_fname, int nb_ant, int nb_freq, int32_t **tdd_calib_coeffs){
FILE *calibF_fd;
int i,j,l,calibF_e;
calibF_fd = fopen(calibF_fname,"r");
if (calibF_fd) {
printf("Loading Calibration matrix from %s\n", calibF_fname);
for(i=0;i<nb_ant;i++){
for(j=0;j<nb_freq*2;j++){
fscanf(calibF_fd, "%d", &calibF_e);
tdd_calib_coeffs[i][j] = (int16_t)calibF_e;
}
}
printf("%d\n",(int)tdd_calib_coeffs[0][0]);
printf("%d\n",(int)tdd_calib_coeffs[1][599]);
} else
printf("%s not found, running with defaults\n",calibF_fname);
}
int estimate_DLCSI_from_ULCSI(int32_t **calib_dl_ch_estimates, int32_t **ul_ch_estimates, int32_t **tdd_calib_coeffs, int nb_ant, int nb_freq) {
}
int compute_BF_weights(int32_t **beam_weights, int32_t **calib_dl_ch_estimates, PRECODE_TYPE_t precode_type, int nb_ant, int nb_freq) {
switch (precode_type) {
//case MRT
case 0 :
//case ZF
break;
case 1 :
//case MMSE
break;
case 2 :
break;
default :
break;
}
}
// temporal test function
void main(){
// initialization
// compare
printf("Hello world!\n");
}
\ No newline at end of file
......@@ -118,6 +118,13 @@ int beam_precoding(int32_t **txdataF,
int slot,
int symbol);
int f_read(char *calibF_fname, int nb_ant, int nb_freq, int32_t **tdd_calib_coeffs);
int estimate_DLCSI_from_ULCSI(int32_t **calib_dl_ch_estimates, int32_t **ul_ch_estimates, int32_t **tdd_calib_coeffs, int nb_ant, int nb_freq);
int compute_BF_weights(int32_t **beam_weights, int32_t **calib_dl_ch_estimates, PRECODE_TYPE_t precode_type, int nb_ant, int nb_freq);
#endif
/** @}*/
#endif
......@@ -593,6 +593,15 @@ typedef enum {
TM9_10=14
} MIMO_mode_t;
typedef enum {
/// MRT
MRT=0,
/// ZF
ZF=1,
/// MMSE
MMSE=2
} PRECODE_TYPE_t;
typedef struct {
/// \brief Holds the transmit data in time domain.
/// For IFFT_FPGA this points to the same memory as PHY_vars->rx_vars[a].RX_DMA_BUFFER.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment