added prototypes to compute beamforming weights
This commit is contained in:
@@ -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,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
#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");
|
||||
}
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user