git-svn-id: http://svn.eurecom.fr/openair4G/trunk@5794 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -53,7 +53,7 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
ncoef = 32767 - coef;
|
ncoef = 32767 - coef;
|
||||||
|
|
||||||
#ifdef DEBUG_PHY
|
#ifdef DEBUG_PHY
|
||||||
LOG_D(PHY,"frame %d: rx_offset (before) = %d\n",phy_vars_ue->frame_rx,phy_vars_ue->rx_offset);
|
LOG_D(PHY,"frame %d, slot %d: rx_offset (before) = %d\n",phy_vars_ue->frame_rx,phy_vars_ue->slot_rx,phy_vars_ue->rx_offset);
|
||||||
#endif //DEBUG_PHY
|
#endif //DEBUG_PHY
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ int lte_est_freq_offset(int **dl_ch_estimates,
|
|||||||
|
|
||||||
dl_ch = (int16_t *)&dl_ch_estimates[aa][12+ch_offset];
|
dl_ch = (int16_t *)&dl_ch_estimates[aa][12+ch_offset];
|
||||||
|
|
||||||
dl_ch_shift = 4+(log2_approx(dl_channel_level(dl_ch,frame_parms))/2);
|
dl_ch_shift = 6+(log2_approx(dl_channel_level(dl_ch,frame_parms))/2);
|
||||||
// printf("dl_ch_shift: %d\n",dl_ch_shift);
|
// printf("dl_ch_shift: %d\n",dl_ch_shift);
|
||||||
|
|
||||||
if (ch_offset == 0)
|
if (ch_offset == 0)
|
||||||
@@ -131,12 +131,12 @@ int lte_est_freq_offset(int **dl_ch_estimates,
|
|||||||
omega_cpx->i += ((struct complex16*) &omega)->i;
|
omega_cpx->i += ((struct complex16*) &omega)->i;
|
||||||
// phase_offset += atan2((double)omega_cpx->i,(double)omega_cpx->r);
|
// phase_offset += atan2((double)omega_cpx->i,(double)omega_cpx->r);
|
||||||
phase_offset += atan2((double)omega_cpx->i,(double)omega_cpx->r);
|
phase_offset += atan2((double)omega_cpx->i,(double)omega_cpx->r);
|
||||||
// printf("omega (%d,%d) -> %f\n",omega_cpx->r,omega_cpx->i,phase_offset);
|
// LOG_D(PHY,"omega (%d,%d) -> %f\n",omega_cpx->r,omega_cpx->i,phase_offset);
|
||||||
}
|
}
|
||||||
// phase_offset /= (frame_parms->nb_antennas_rx*frame_parms->nb_antennas_tx);
|
// phase_offset /= (frame_parms->nb_antennas_rx*frame_parms->nb_antennas_tx);
|
||||||
|
|
||||||
freq_offset_est = (int) (phase_offset/(2*M_PI)/2.5e-4); //2.5e-4 is the time between pilot symbols
|
freq_offset_est = (int) (phase_offset/(2*M_PI)/(frame_parms->Ncp==NORMAL ? (285.8e-6):(2.5e-4))); //2.5e-4 is the time between pilot symbols
|
||||||
// printf("symbol %d : freq_offset_est %d\n",l,freq_offset_est);
|
// LOG_D(PHY,"symbol %d : freq_offset_est %d\n",l,freq_offset_est);
|
||||||
|
|
||||||
// update freq_offset with phase_offset using a moving average filter
|
// update freq_offset with phase_offset using a moving average filter
|
||||||
if (first_run == 1) {
|
if (first_run == 1) {
|
||||||
|
|||||||
@@ -138,8 +138,8 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *phy_vars_eNB,
|
|||||||
Msc_RS_idx = b;
|
Msc_RS_idx = b;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// msg("lte_ul_channel_estimation: subframe %d, Ns %d, l %d, Msc_RS = %d, Msc_RS_idx = %d, u %d, v %d, cyclic_shift %d\n",subframe,Ns,l,Msc_RS, Msc_RS_idx,u,v,cyclic_shift);
|
// LOG_I(PHY,"subframe %d, Ns %d, l %d, Msc_RS = %d, Msc_RS_idx = %d, u %d, v %d, cyclic_shift %d\n",subframe,Ns,l,Msc_RS, Msc_RS_idx,u,v,cyclic_shift);
|
||||||
#ifdef DEBUG_CH
|
#ifdef DEBUG_CH
|
||||||
|
|
||||||
#ifdef USER_MODE
|
#ifdef USER_MODE
|
||||||
if (Ns==0)
|
if (Ns==0)
|
||||||
|
|||||||
@@ -3678,7 +3678,7 @@ uint8_t ul_subframe2pdcch_alloc_subframe(LTE_DL_FRAME_PARMS *frame_parms,uint8_t
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t pdcch_alloc2ul_frame(LTE_DL_FRAME_PARMS *frame_parms,uint32_t frame, uint8_t n){
|
uint32_t pdcch_alloc2ul_frame(LTE_DL_FRAME_PARMS *frame_parms,uint32_t frame, uint8_t n){
|
||||||
|
|
||||||
if ((frame_parms->frame_type == TDD) &&
|
if ((frame_parms->frame_type == TDD) &&
|
||||||
(frame_parms->tdd_config == 1) &&
|
(frame_parms->tdd_config == 1) &&
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
#include "gain_control.h"
|
#include "gain_control.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define DEBUG_INITIAL_SYNCH
|
//#define DEBUG_INITIAL_SYNCH
|
||||||
|
|
||||||
int pbch_detection(PHY_VARS_UE *phy_vars_ue, runmode_t mode) {
|
int pbch_detection(PHY_VARS_UE *phy_vars_ue, runmode_t mode) {
|
||||||
|
|
||||||
@@ -458,7 +458,7 @@ int initial_sync(PHY_VARS_UE *phy_vars_ue, runmode_t mode) {
|
|||||||
#ifdef OPENAIR2
|
#ifdef OPENAIR2
|
||||||
LOG_I(PHY,"[PHY][UE%d] Sending synch status to higher layers\n",phy_vars_ue->Mod_id);
|
LOG_I(PHY,"[PHY][UE%d] Sending synch status to higher layers\n",phy_vars_ue->Mod_id);
|
||||||
//mac_resynch();
|
//mac_resynch();
|
||||||
mac_xface->dl_phy_sync_success(phy_vars_ue->Mod_id,phy_vars_ue->frame_rx,0,1);//phy_vars_ue->lte_ue_common_vars.eNb_id);
|
mac_xface->dl_phy_sync_success(phy_vars_ue->Mod_id,phy_vars_ue->frame_rx,0,1);//phy_vars_ue->lte_ue_common_vars.eNb_id);
|
||||||
#endif //OPENAIR2
|
#endif //OPENAIR2
|
||||||
|
|
||||||
generate_pcfich_reg_mapping(frame_parms);
|
generate_pcfich_reg_mapping(frame_parms);
|
||||||
|
|||||||
@@ -53,7 +53,8 @@
|
|||||||
|
|
||||||
//unsigned short phich_reg[MAX_NUM_PHICH_GROUPS][3];
|
//unsigned short phich_reg[MAX_NUM_PHICH_GROUPS][3];
|
||||||
|
|
||||||
uint8_t rv_table[4] = {0, 2, 3, 1}; //36.321 5.4.2.2
|
|
||||||
|
uint8_t rv_table[4] = {0, 2, 3, 1};
|
||||||
|
|
||||||
uint8_t get_mi(LTE_DL_FRAME_PARMS *frame_parms,uint8_t subframe) {
|
uint8_t get_mi(LTE_DL_FRAME_PARMS *frame_parms,uint8_t subframe) {
|
||||||
|
|
||||||
|
|||||||
@@ -104,6 +104,8 @@ int is_pmch_subframe(uint32_t frame, int subframe, LTE_DL_FRAME_PARMS *frame_par
|
|||||||
uint32_t period;
|
uint32_t period;
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
|
|
||||||
|
// LOG_D(PHY,"is_pmch_subframe: frame %d, subframe %d, num_MBSFN_config %d\n",
|
||||||
|
// frame,subframe,frame_parms->num_MBSFN_config);
|
||||||
|
|
||||||
for (i=0; i<frame_parms->num_MBSFN_config; i++) { // we have at least one MBSFN configuration
|
for (i=0; i<frame_parms->num_MBSFN_config; i++) { // we have at least one MBSFN configuration
|
||||||
period = 1<<frame_parms->MBSFN_config[i].radioframeAllocationPeriod;
|
period = 1<<frame_parms->MBSFN_config[i].radioframeAllocationPeriod;
|
||||||
|
|||||||
@@ -801,7 +801,7 @@ void rx_prach(PHY_VARS_eNB *phy_vars_eNB,uint8_t subframe,uint16_t *preamble_ene
|
|||||||
uint8_t new_dft=0;
|
uint8_t new_dft=0;
|
||||||
uint8_t aa;
|
uint8_t aa;
|
||||||
int32_t lev;
|
int32_t lev;
|
||||||
int8_t levdB;
|
int16_t levdB;
|
||||||
int fft_size,log2_ifft_size;
|
int fft_size,log2_ifft_size;
|
||||||
uint8_t nb_ant_rx = 1; //phy_vars_eNB->lte_frame_parms.nb_antennas_rx;
|
uint8_t nb_ant_rx = 1; //phy_vars_eNB->lte_frame_parms.nb_antennas_rx;
|
||||||
|
|
||||||
@@ -1121,7 +1121,7 @@ void rx_prach(PHY_VARS_eNB *phy_vars_eNB,uint8_t subframe,uint16_t *preamble_ene
|
|||||||
for (aa=0; aa<nb_ant_rx; aa++) {
|
for (aa=0; aa<nb_ant_rx; aa++) {
|
||||||
lev += (int32_t)prach_ifft[aa][(preamble_shift2+i)<<2]*prach_ifft[aa][(preamble_shift2+i)<<2] + (int32_t)prach_ifft[aa][1+((preamble_shift2+i)<<2)]*prach_ifft[aa][1+((preamble_shift2+i)<<2)];
|
lev += (int32_t)prach_ifft[aa][(preamble_shift2+i)<<2]*prach_ifft[aa][(preamble_shift2+i)<<2] + (int32_t)prach_ifft[aa][1+((preamble_shift2+i)<<2)]*prach_ifft[aa][1+((preamble_shift2+i)<<2)];
|
||||||
}
|
}
|
||||||
levdB = dB_fixed(lev);
|
levdB = dB_fixed_times10(lev);
|
||||||
|
|
||||||
if (levdB>preamble_energy_list[preamble_index] ) {
|
if (levdB>preamble_energy_list[preamble_index] ) {
|
||||||
preamble_energy_list[preamble_index] = levdB;
|
preamble_energy_list[preamble_index] = levdB;
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ int generate_eNB_ulsch_params_from_rar(unsigned char *rar_pdu,
|
|||||||
uint16_t *RIV2nb_rb_LUT, *RIV2first_rb_LUT;
|
uint16_t *RIV2nb_rb_LUT, *RIV2first_rb_LUT;
|
||||||
uint16_t RIV_max;
|
uint16_t RIV_max;
|
||||||
|
|
||||||
LOG_D(PHY,"[eNB][RAPROC] generate_eNB_ulsch_params_from_rar: subframe %d (harq_pid %d)\n",subframe,harq_pid);
|
LOG_I(PHY,"[eNB][RAPROC] generate_eNB_ulsch_params_from_rar: subframe %d (harq_pid %d)\n",subframe,harq_pid);
|
||||||
switch (frame_parms->N_RB_DL) {
|
switch (frame_parms->N_RB_DL) {
|
||||||
case 6:
|
case 6:
|
||||||
RIV2nb_rb_LUT = &RIV2nb_rb_LUT6[0];
|
RIV2nb_rb_LUT = &RIV2nb_rb_LUT6[0];
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ int slot_fep(PHY_VARS_UE *phy_vars_ue,
|
|||||||
#ifdef DEBUG_FEP
|
#ifdef DEBUG_FEP
|
||||||
msg("Frequency offset estimation\n");
|
msg("Frequency offset estimation\n");
|
||||||
#endif
|
#endif
|
||||||
if ((l == 0) || (l==(4-frame_parms->Ncp))) {
|
if (l==(4-frame_parms->Ncp)) {
|
||||||
start_meas(&phy_vars_ue->dlsch_freq_offset_estimation_stats);
|
start_meas(&phy_vars_ue->dlsch_freq_offset_estimation_stats);
|
||||||
lte_est_freq_offset(ue_common_vars->dl_ch_estimates[0],
|
lte_est_freq_offset(ue_common_vars->dl_ch_estimates[0],
|
||||||
frame_parms,
|
frame_parms,
|
||||||
|
|||||||
@@ -416,7 +416,7 @@ uint8_t pdcch_alloc2ul_subframe(LTE_DL_FRAME_PARMS *frame_parms,uint8_t n);
|
|||||||
@param n subframe of PDCCH
|
@param n subframe of PDCCH
|
||||||
@returns UL frame corresponding to pdcch order
|
@returns UL frame corresponding to pdcch order
|
||||||
*/
|
*/
|
||||||
uint8_t pdcch_alloc2ul_frame(LTE_DL_FRAME_PARMS *frame_parms,uint32_t frame, uint8_t n);
|
uint32_t pdcch_alloc2ul_frame(LTE_DL_FRAME_PARMS *frame_parms,uint32_t frame, uint8_t n);
|
||||||
|
|
||||||
|
|
||||||
uint16_t get_Np(uint8_t N_RB_DL,uint8_t nCCE,uint8_t plus1);
|
uint16_t get_Np(uint8_t N_RB_DL,uint8_t nCCE,uint8_t plus1);
|
||||||
@@ -533,7 +533,6 @@ void dump_dlsch(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe,uint8_t
|
|||||||
void dump_dlsch_SI(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe);
|
void dump_dlsch_SI(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe);
|
||||||
void dump_dlsch_ra(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe);
|
void dump_dlsch_ra(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe);
|
||||||
|
|
||||||
uint8_t pdcch_alloc2ul_frame(LTE_DL_FRAME_PARMS *frame_parms,uint32_t frame, uint8_t n);
|
|
||||||
|
|
||||||
/**@}*/
|
/**@}*/
|
||||||
#endif //OPENAIR_LTE
|
#endif //OPENAIR_LTE
|
||||||
|
|||||||
@@ -1620,13 +1620,16 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
|
|||||||
}
|
}
|
||||||
#ifdef DEBUG_PHY_PROC
|
#ifdef DEBUG_PHY_PROC
|
||||||
//if (phy_vars_eNB->proc[sched_subframe].frame_tx%100 == 0)
|
//if (phy_vars_eNB->proc[sched_subframe].frame_tx%100 == 0)
|
||||||
LOG_I(PHY,"[eNB %d][PUSCH %d] Frame %d subframe %d Generated ULSCH (format0) DCI (rnti %x, dci %x) (DCI pos %d/%d), aggregation %d\n",
|
LOG_I(PHY,"[eNB %d][PUSCH %d] Frame %d subframe %d UL Frame %d, UL Subframe %d, Generated ULSCH (format0) DCI (rnti %x, dci %x) (DCI pos %d/%d), aggregation %d\n",
|
||||||
phy_vars_eNB->Mod_id,
|
phy_vars_eNB->Mod_id,
|
||||||
subframe2harq_pid(&phy_vars_eNB->lte_frame_parms,
|
subframe2harq_pid(&phy_vars_eNB->lte_frame_parms,
|
||||||
pdcch_alloc2ul_frame(&phy_vars_eNB->lte_frame_parms,(((subframe)==0)?1:0)+phy_vars_eNB->proc[sched_subframe].frame_tx,subframe),
|
pdcch_alloc2ul_frame(&phy_vars_eNB->lte_frame_parms,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe),
|
||||||
pdcch_alloc2ul_subframe(&phy_vars_eNB->lte_frame_parms,subframe)),
|
pdcch_alloc2ul_subframe(&phy_vars_eNB->lte_frame_parms,subframe)),
|
||||||
pdcch_alloc2ul_frame(&phy_vars_eNB->lte_frame_parms,(((subframe)==0)?1:0)+phy_vars_eNB->proc[sched_subframe].frame_tx,subframe),
|
phy_vars_eNB->proc[sched_subframe].frame_tx,
|
||||||
subframe,DCI_pdu->dci_alloc[i].rnti,
|
subframe,
|
||||||
|
pdcch_alloc2ul_frame(&phy_vars_eNB->lte_frame_parms,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe),
|
||||||
|
pdcch_alloc2ul_subframe(&phy_vars_eNB->lte_frame_parms,subframe),
|
||||||
|
DCI_pdu->dci_alloc[i].rnti,
|
||||||
*(unsigned int *)&DCI_pdu->dci_alloc[i].dci_pdu[0],
|
*(unsigned int *)&DCI_pdu->dci_alloc[i].dci_pdu[0],
|
||||||
i,DCI_pdu->Num_common_dci + DCI_pdu->Num_ue_spec_dci,
|
i,DCI_pdu->Num_common_dci + DCI_pdu->Num_ue_spec_dci,
|
||||||
1<<DCI_pdu->dci_alloc[i].L);
|
1<<DCI_pdu->dci_alloc[i].L);
|
||||||
@@ -1867,6 +1870,13 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
|
|||||||
phy_vars_eNB->proc[sched_subframe].frame_tx,
|
phy_vars_eNB->proc[sched_subframe].frame_tx,
|
||||||
&phy_vars_eNB->ulsch_eNB[(uint32_t)UE_id]->Msg3_frame,
|
&phy_vars_eNB->ulsch_eNB[(uint32_t)UE_id]->Msg3_frame,
|
||||||
&phy_vars_eNB->ulsch_eNB[(uint32_t)UE_id]->Msg3_subframe);
|
&phy_vars_eNB->ulsch_eNB[(uint32_t)UE_id]->Msg3_subframe);
|
||||||
|
LOG_I(PHY,"[eNB][RAPROC] Frame %d subframe %d, Activated Msg3 demodulation for UE %d in frame %d, subframe %d\n",
|
||||||
|
phy_vars_eNB->proc[sched_subframe].frame_tx,
|
||||||
|
subframe,
|
||||||
|
UE_id,
|
||||||
|
phy_vars_eNB->ulsch_eNB[(uint32_t)UE_id]->Msg3_frame,
|
||||||
|
phy_vars_eNB->ulsch_eNB[(uint32_t)UE_id]->Msg3_subframe);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
for (i=0;i<input_buffer_length;i++)
|
for (i=0;i<input_buffer_length;i++)
|
||||||
dlsch_input_buffer[i]= (unsigned char) i; //(taus()&0xff);
|
dlsch_input_buffer[i]= (unsigned char) i; //(taus()&0xff);
|
||||||
@@ -2552,6 +2562,8 @@ void get_n1_pucch_eNB(PHY_VARS_eNB *phy_vars_eNB,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
extern int16_t prach_ifft[4][1024*4];
|
||||||
|
|
||||||
void prach_procedures(PHY_VARS_eNB *phy_vars_eNB,uint8_t sched_subframe,uint8_t abstraction_flag) {
|
void prach_procedures(PHY_VARS_eNB *phy_vars_eNB,uint8_t sched_subframe,uint8_t abstraction_flag) {
|
||||||
|
|
||||||
uint16_t preamble_energy_list[64],preamble_delay_list[64];
|
uint16_t preamble_energy_list[64],preamble_delay_list[64];
|
||||||
@@ -2589,7 +2601,7 @@ void prach_procedures(PHY_VARS_eNB *phy_vars_eNB,uint8_t sched_subframe,uint8_t
|
|||||||
if ((PHY_vars_UE_g[UE_id][CC_id]->generate_prach==1) &&
|
if ((PHY_vars_UE_g[UE_id][CC_id]->generate_prach==1) &&
|
||||||
(PHY_vars_UE_g[UE_id][CC_id]->lte_frame_parms.prach_config_common.rootSequenceIndex ==
|
(PHY_vars_UE_g[UE_id][CC_id]->lte_frame_parms.prach_config_common.rootSequenceIndex ==
|
||||||
phy_vars_eNB->lte_frame_parms.prach_config_common.rootSequenceIndex) ) {
|
phy_vars_eNB->lte_frame_parms.prach_config_common.rootSequenceIndex) ) {
|
||||||
preamble_energy_list[PHY_vars_UE_g[UE_id][CC_id]->prach_PreambleIndex] = 80;
|
preamble_energy_list[PHY_vars_UE_g[UE_id][CC_id]->prach_PreambleIndex] = 800;
|
||||||
preamble_delay_list[PHY_vars_UE_g[UE_id][CC_id]->prach_PreambleIndex] = 5;
|
preamble_delay_list[PHY_vars_UE_g[UE_id][CC_id]->prach_PreambleIndex] = 5;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -2612,16 +2624,27 @@ void prach_procedures(PHY_VARS_eNB *phy_vars_eNB,uint8_t sched_subframe,uint8_t
|
|||||||
preamble_delay_list[preamble_max]);
|
preamble_delay_list[preamble_max]);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (preamble_energy_list[preamble_max] > 60) {
|
if (preamble_energy_list[preamble_max] > 600) {
|
||||||
|
/*
|
||||||
|
write_output("prach_ifft0.m","prach_t0",prach_ifft[0],2048,1,1);
|
||||||
|
write_output("prach_rx0.m","prach_rx0",&phy_vars_eNB->lte_eNB_common_vars.rxdata[0][0][subframe*phy_vars_eNB->lte_frame_parms.samples_per_tti],6144+792,1,1);
|
||||||
|
write_output("prach_rxF0.m","prach_rxF0",phy_vars_eNB->lte_eNB_prach_vars.rxsigF[0],24576,1,1);
|
||||||
|
|
||||||
|
mac_xface->macphy_exit("Exiting for PRACH debug\n");
|
||||||
|
*/
|
||||||
|
|
||||||
UE_id = find_next_ue_index(phy_vars_eNB);
|
UE_id = find_next_ue_index(phy_vars_eNB);
|
||||||
if (UE_id>=0) {
|
if (UE_id>=0) {
|
||||||
phy_vars_eNB->eNB_UE_stats[(uint32_t)UE_id].UE_timing_offset = preamble_delay_list[preamble_max]&0x1FFF; //limit to 13 (=11+2) bits
|
phy_vars_eNB->eNB_UE_stats[(uint32_t)UE_id].UE_timing_offset = preamble_delay_list[preamble_max]&0x1FFF; //limit to 13 (=11+2) bits
|
||||||
//phy_vars_eNb->eNB_UE_stats[(uint32_t)UE_id].mode = PRACH;
|
//phy_vars_eNb->eNB_UE_stats[(uint32_t)UE_id].mode = PRACH;
|
||||||
phy_vars_eNB->eNB_UE_stats[(uint32_t)UE_id].sector = 0;
|
phy_vars_eNB->eNB_UE_stats[(uint32_t)UE_id].sector = 0;
|
||||||
LOG_I(PHY,"[eNB %d][RAPROC] Initiating RA procedure with preamble %d, energy %d, delay %d\n",
|
LOG_I(PHY,"[eNB %d][RAPROC] Frame %d, subframe %d Initiating RA procedure with preamble %d, energy %d.%d dB, delay %d\n",
|
||||||
phy_vars_eNB->Mod_id,
|
phy_vars_eNB->Mod_id,
|
||||||
|
frame,
|
||||||
|
subframe,
|
||||||
preamble_max,
|
preamble_max,
|
||||||
preamble_energy_max,
|
preamble_energy_max/10,
|
||||||
|
preamble_energy_max%10,
|
||||||
preamble_delay_list[preamble_max]);
|
preamble_delay_list[preamble_max]);
|
||||||
#ifdef OPENAIR2
|
#ifdef OPENAIR2
|
||||||
mac_xface->initiate_ra_proc(phy_vars_eNB->Mod_id,
|
mac_xface->initiate_ra_proc(phy_vars_eNB->Mod_id,
|
||||||
@@ -2645,6 +2668,7 @@ void ulsch_decoding_procedures(unsigned char subframe, unsigned int i, PHY_VARS_
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void phy_procedures_eNB_RX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_eNB,uint8_t abstraction_flag,relaying_type_t r_type) {
|
void phy_procedures_eNB_RX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_eNB,uint8_t abstraction_flag,relaying_type_t r_type) {
|
||||||
//RX processing
|
//RX processing
|
||||||
uint32_t l, ret=0,i,j,k;
|
uint32_t l, ret=0,i,j,k;
|
||||||
@@ -3724,8 +3748,7 @@ void phy_procedures_eNB_lte(unsigned char subframe,PHY_VARS_eNB **phy_vars_eNB,u
|
|||||||
if (phy_vars_eNB->proc[sched_subframe].frame_tx >= 1000)
|
if (phy_vars_eNB->proc[sched_subframe].frame_tx >= 1000)
|
||||||
mac_xface->macphy_exit("Exiting after 1000 Frames\n");
|
mac_xface->macphy_exit("Exiting after 1000 Frames\n");
|
||||||
*/
|
*/
|
||||||
vcd_signal_dumper_dump_variable_by_name(VCD_SIGNAL_DUMPER_VARIABLES_SLOT_NUMBER_ENB, subframe*2);
|
vcd_signal_dumper_dump_variable_by_name(VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX_ENB, phy_vars_eNB[0]->proc[subframe].frame_tx);
|
||||||
vcd_signal_dumper_dump_variable_by_name(VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_ENB, phy_vars_eNB[0]->proc[subframe].frame_tx);
|
|
||||||
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_LTE,1);
|
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_LTE,1);
|
||||||
start_meas(&phy_vars_eNB[0]->phy_proc);
|
start_meas(&phy_vars_eNB[0]->phy_proc);
|
||||||
|
|
||||||
|
|||||||
@@ -1476,19 +1476,23 @@ void lte_ue_measurement_procedures(uint16_t l, PHY_VARS_UE *phy_vars_ue,uint8_t
|
|||||||
|
|
||||||
if (l==(4-frame_parms->Ncp)) {
|
if (l==(4-frame_parms->Ncp)) {
|
||||||
|
|
||||||
|
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_RRC_MEASUREMENTS, VCD_FUNCTION_IN);
|
||||||
ue_rrc_measurements(phy_vars_ue,
|
ue_rrc_measurements(phy_vars_ue,
|
||||||
slot_rx,
|
slot_rx,
|
||||||
abstraction_flag);
|
abstraction_flag);
|
||||||
|
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_RRC_MEASUREMENTS, VCD_FUNCTION_OUT);
|
||||||
|
|
||||||
//phy_vars_ue->sinr_eff = sinr_eff_cqi_calc(phy_vars_ue, 0);
|
if (abstraction_flag==1)
|
||||||
|
phy_vars_ue->sinr_eff = sinr_eff_cqi_calc(phy_vars_ue, 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((slot_rx==1) && (l==(4-frame_parms->Ncp))) {
|
if ((slot_rx==1) && (l==(4-frame_parms->Ncp))) {
|
||||||
|
|
||||||
// AGC
|
// AGC
|
||||||
#ifdef EXMIMO
|
|
||||||
|
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GAIN_CONTROL, VCD_FUNCTION_IN);
|
||||||
|
#if defined EXMIMO
|
||||||
|
|
||||||
if ((openair_daq_vars.rx_gain_mode == DAQ_AGC_ON) &&
|
if ((openair_daq_vars.rx_gain_mode == DAQ_AGC_ON) &&
|
||||||
(mode != rx_calib_ue) && (mode != rx_calib_ue_med) && (mode != rx_calib_ue_byp) )
|
(mode != rx_calib_ue) && (mode != rx_calib_ue_med) && (mode != rx_calib_ue_byp) )
|
||||||
@@ -1499,7 +1503,8 @@ void lte_ue_measurement_procedures(uint16_t l, PHY_VARS_UE *phy_vars_ue,uint8_t
|
|||||||
phy_adjust_gain (phy_vars_ue,0);
|
phy_adjust_gain (phy_vars_ue,0);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GAIN_CONTROL, VCD_FUNCTION_OUT);
|
||||||
|
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ADJUST_SYNCH, VCD_FUNCTION_IN);
|
||||||
eNB_id = 0;
|
eNB_id = 0;
|
||||||
|
|
||||||
if (abstraction_flag == 0)
|
if (abstraction_flag == 0)
|
||||||
@@ -1508,6 +1513,7 @@ void lte_ue_measurement_procedures(uint16_t l, PHY_VARS_UE *phy_vars_ue,uint8_t
|
|||||||
eNB_id,
|
eNB_id,
|
||||||
0,
|
0,
|
||||||
16384);
|
16384);
|
||||||
|
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ADJUST_SYNCH, VCD_FUNCTION_OUT);
|
||||||
|
|
||||||
/* if (openair_daq_vars.auto_freq_correction == 1) {
|
/* if (openair_daq_vars.auto_freq_correction == 1) {
|
||||||
if (frame_rx % 100 == 0) {
|
if (frame_rx % 100 == 0) {
|
||||||
@@ -2349,6 +2355,7 @@ int lte_ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst
|
|||||||
n_symb = 0;
|
n_symb = 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
/*
|
||||||
if (is_pmch_subframe(frame_rx,subframe_rx,&phy_vars_ue->lte_frame_parms)) {
|
if (is_pmch_subframe(frame_rx,subframe_rx,&phy_vars_ue->lte_frame_parms)) {
|
||||||
if ((slot_rx%2)==0) {
|
if ((slot_rx%2)==0) {
|
||||||
n_symb=2;
|
n_symb=2;
|
||||||
@@ -2357,7 +2364,7 @@ int lte_ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst
|
|||||||
else
|
else
|
||||||
n_symb=0;
|
n_symb=0;
|
||||||
}
|
}
|
||||||
else
|
else*/
|
||||||
n_symb = phy_vars_ue->lte_frame_parms.symbols_per_tti/2;
|
n_symb = phy_vars_ue->lte_frame_parms.symbols_per_tti/2;
|
||||||
}
|
}
|
||||||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
@@ -2369,11 +2376,13 @@ int lte_ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst
|
|||||||
for (l=0;l<n_symb;l++) {
|
for (l=0;l<n_symb;l++) {
|
||||||
if (abstraction_flag == 0) {
|
if (abstraction_flag == 0) {
|
||||||
start_meas(&phy_vars_ue->ofdm_demod_stats);
|
start_meas(&phy_vars_ue->ofdm_demod_stats);
|
||||||
|
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_IN);
|
||||||
slot_fep(phy_vars_ue,
|
slot_fep(phy_vars_ue,
|
||||||
l,
|
l,
|
||||||
slot_rx,
|
slot_rx,
|
||||||
phy_vars_ue->rx_offset,
|
phy_vars_ue->rx_offset,
|
||||||
0);
|
0);
|
||||||
|
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_OUT);
|
||||||
stop_meas(&phy_vars_ue->ofdm_demod_stats);
|
stop_meas(&phy_vars_ue->ofdm_demod_stats);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user