Merge branch 'enhancement-10-harmony' of https://gitlab.eurecom.fr/oai/openairinterface5g into enhancement-10-harmony
This commit is contained in:
@@ -43,10 +43,6 @@
|
||||
#include "assertions.h"
|
||||
#include <math.h>
|
||||
|
||||
#ifdef EXMIMO
|
||||
extern openair0_rf_map rf_map[MAX_NUM_CCs];
|
||||
#endif
|
||||
|
||||
extern uint16_t prach_root_sequence_map0_3[838];
|
||||
extern uint16_t prach_root_sequence_map4[138];
|
||||
uint8_t dmrs1_tab[8] = {0,2,3,4,6,8,9,10};
|
||||
@@ -672,7 +668,7 @@ void phy_config_dedicated_scell_eNB(uint8_t Mod_id,
|
||||
int CC_id)
|
||||
{
|
||||
|
||||
//PHY_VARS_eNB *eNB = PHY_vars_eNB_g[Mod_id][CC_id];
|
||||
|
||||
uint8_t UE_id = find_ue(rnti,PHY_vars_eNB_g[Mod_id][0]);
|
||||
struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10 = sCellToAddMod_r10->radioResourceConfigDedicatedSCell_r10->physicalConfigDedicatedSCell_r10;
|
||||
//struct RadioResourceConfigCommonSCell_r10 *physicalConfigCommonSCell_r10 = sCellToAddMod_r10->radioResourceConfigCommonSCell_r10;
|
||||
@@ -682,13 +678,14 @@ void phy_config_dedicated_scell_eNB(uint8_t Mod_id,
|
||||
|
||||
#ifdef EXMIMO
|
||||
#ifdef DRIVER2013
|
||||
exmimo_config_t *p_exmimo_config = openair0_exmimo_pci[rf_map[CC_id].card].exmimo_config_ptr;
|
||||
// exmimo_config_t *p_exmimo_config = openair0_exmimo_pci[rf_map[CC_id].card].exmimo_config_ptr;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
if ((dl_CarrierFreq_r10>=36000) && (dl_CarrierFreq_r10<=36199)) {
|
||||
carrier_freq_local = 1900000000 + (dl_CarrierFreq_r10-36000)*100000; //band 33 from 3GPP 36.101 v 10.9 Table 5.7.3-1
|
||||
LOG_I(PHY,"[eNB %d] Frame %d: Configured SCell %d to frequency %d (ARFCN %d) for UE %d\n",Mod_id,/*eNB->frame*/0,CC_id,carrier_freq_local,dl_CarrierFreq_r10,UE_id);
|
||||
/*
|
||||
#ifdef EXMIMO
|
||||
#ifdef DRIVER2013
|
||||
//carrier_freq[CC_id] = carrier_freq_local;
|
||||
@@ -700,11 +697,12 @@ void phy_config_dedicated_scell_eNB(uint8_t Mod_id,
|
||||
p_exmimo_config->rf.rf_local[rf_map[CC_id].chain] = 8255063; //this should be taken form calibration file
|
||||
p_exmimo_config->rf.rffe_band_mode[rf_map[CC_id].chain] = B19G_TDD;
|
||||
#endif
|
||||
#endif
|
||||
#endif*/
|
||||
} else if ((dl_CarrierFreq_r10>=6150) && (dl_CarrierFreq_r10<=6449)) {
|
||||
carrier_freq_local = 832000000 + (dl_CarrierFreq_r10-6150)*100000; //band 20 from 3GPP 36.101 v 10.9 Table 5.7.3-1
|
||||
// this is actually for the UL only, but we use it for DL too, since there is no TDD mode for this band
|
||||
LOG_I(PHY,"[eNB %d] Frame %d: Configured SCell %d to frequency %d (ARFCN %d) for UE %d\n",Mod_id,/*eNB->frame*/0,CC_id,carrier_freq_local,dl_CarrierFreq_r10,UE_id);
|
||||
/*
|
||||
#ifdef EXMIMO
|
||||
#ifdef DRIVER2013
|
||||
//carrier_freq[CC_id] = carrier_freq_local;
|
||||
@@ -717,6 +715,7 @@ void phy_config_dedicated_scell_eNB(uint8_t Mod_id,
|
||||
p_exmimo_config->rf.rffe_band_mode[rf_map[CC_id].chain] = DD_TDD;
|
||||
#endif
|
||||
#endif
|
||||
*/
|
||||
} else {
|
||||
LOG_E(PHY,"[eNB %d] Frame %d: ARFCN %d of SCell %d for UE %d not supported\n",Mod_id,/*eNB->frame*/0,dl_CarrierFreq_r10,CC_id,UE_id);
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ void send_IF4p5(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t packet_type
|
||||
}
|
||||
} else if (packet_type == IF4p5_PRACH) {
|
||||
// FIX: hard coded prach samples length
|
||||
db_fulllength = 839*2;
|
||||
db_fulllength = 840*2;
|
||||
|
||||
IF4p5_header_t *prach_header = (IF4p5_header_t *)(tx_buffer + MAC_HEADER_SIZE_BYTES);
|
||||
data_block = (uint16_t*)(tx_buffer + MAC_HEADER_SIZE_BYTES + sizeof_IF4p5_header_t);
|
||||
@@ -197,7 +197,8 @@ void recv_IF4p5(PHY_VARS_eNB *eNB, int *frame, int *subframe, uint16_t *packet_t
|
||||
|
||||
*frame = ((packet_header->frame_status)>>6)&0xffff;
|
||||
*subframe = ((packet_header->frame_status)>>22)&0x000f;
|
||||
|
||||
|
||||
|
||||
if (*packet_type == IF4p5_PDLFFT) {
|
||||
*symbol_number = ((packet_header->frame_status)>>26)&0x000f;
|
||||
|
||||
@@ -232,7 +233,7 @@ void recv_IF4p5(PHY_VARS_eNB *eNB, int *frame, int *subframe, uint16_t *packet_t
|
||||
|
||||
} else if (*packet_type == IF4p5_PRACH) {
|
||||
// FIX: hard coded prach samples length
|
||||
db_fulllength = 839*2;
|
||||
db_fulllength = 840*2;
|
||||
|
||||
memcpy((&rxsigF[0][0]),
|
||||
(int16_t*) (rx_buffer+MAC_HEADER_SIZE_BYTES+sizeof_IF4p5_header_t),
|
||||
@@ -261,6 +262,7 @@ void gen_IF4p5_dl_header(IF4p5_header_t *dl_packet, int frame, int subframe) {
|
||||
|
||||
|
||||
void gen_IF4p5_ul_header(IF4p5_header_t *ul_packet, int frame, int subframe) {
|
||||
|
||||
ul_packet->type = IF4p5_PACKET_TYPE;
|
||||
ul_packet->sub_type = IF4p5_PULFFT;
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ void send_IF5(PHY_VARS_eNB *eNB, openair0_timestamp proc_timestamp, int subframe
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE_IF, 1 );
|
||||
eNB->ifdevice.trx_write_func(&eNB->ifdevice,
|
||||
(proc_timestamp + packet_id*spp_eth),
|
||||
txp,
|
||||
(void**)txp,
|
||||
spp_eth,
|
||||
fp->nb_antennas_tx,
|
||||
0);
|
||||
@@ -86,7 +86,7 @@ void send_IF5(PHY_VARS_eNB *eNB, openair0_timestamp proc_timestamp, int subframe
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE_IF, 1 );
|
||||
eNB->ifdevice.trx_write_func(&eNB->ifdevice,
|
||||
(proc_timestamp + packet_id*spp_eth),
|
||||
rxp,
|
||||
(void**)rxp,
|
||||
spp_eth,
|
||||
fp->nb_antennas_rx,
|
||||
0);
|
||||
@@ -131,7 +131,7 @@ void send_IF5(PHY_VARS_eNB *eNB, openair0_timestamp proc_timestamp, int subframe
|
||||
// Write the packet to the fronthaul
|
||||
if ((eNB->ifdevice.trx_write_func(&eNB->ifdevice,
|
||||
packet_id,
|
||||
&tx_buffer,
|
||||
(void**)&tx_buffer,
|
||||
db_fulllength,
|
||||
1,
|
||||
IF5_MOBIPASS)) < 0) {
|
||||
@@ -177,7 +177,7 @@ void recv_IF5(PHY_VARS_eNB *eNB, openair0_timestamp *proc_timestamp, int subfram
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ_IF, 1 );
|
||||
eNB->ifdevice.trx_read_func(&eNB->ifdevice,
|
||||
×tamp[packet_id],
|
||||
txp,
|
||||
(void**)txp,
|
||||
spp_eth,
|
||||
fp->nb_antennas_tx);
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ_IF, 0 );
|
||||
@@ -197,7 +197,7 @@ void recv_IF5(PHY_VARS_eNB *eNB, openair0_timestamp *proc_timestamp, int subfram
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ_IF, 1 );
|
||||
eNB->ifdevice.trx_read_func(&eNB->ifdevice,
|
||||
×tamp[packet_id],
|
||||
rxp,
|
||||
(void**)rxp,
|
||||
spp_eth,
|
||||
fp->nb_antennas_rx);
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ_IF, 0 );
|
||||
|
||||
@@ -1065,7 +1065,7 @@ void rx_prach(PHY_VARS_eNB *eNB,
|
||||
|
||||
int i;
|
||||
lte_frame_type_t frame_type = eNB->frame_parms.frame_type;
|
||||
int subframe = eNB->proc.subframe_rx;
|
||||
int subframe = eNB->proc.subframe_prach;
|
||||
uint16_t rootSequenceIndex = eNB->frame_parms.prach_config_common.rootSequenceIndex;
|
||||
uint8_t prach_ConfigIndex = eNB->frame_parms.prach_config_common.prach_ConfigInfo.prach_ConfigIndex;
|
||||
uint8_t Ncs_config = eNB->frame_parms.prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig;
|
||||
@@ -1101,6 +1101,8 @@ void rx_prach(PHY_VARS_eNB *eNB,
|
||||
int fft_size,log2_ifft_size;
|
||||
uint8_t nb_ant_rx = 1; //eNB->frame_parms.nb_antennas_rx;
|
||||
|
||||
// int en;
|
||||
|
||||
for (aa=0; aa<nb_ant_rx; aa++) {
|
||||
prach[aa] = (int16_t*)&eNB->common_vars.rxdata[0][aa][subframe*eNB->frame_parms.samples_per_tti-eNB->N_TA_offset];
|
||||
}
|
||||
@@ -1282,8 +1284,11 @@ void rx_prach(PHY_VARS_eNB *eNB,
|
||||
k*=2;
|
||||
|
||||
/// **** send_IF4 of rxsigF to RCC **** ///
|
||||
send_IF4p5(eNB, eNB->proc.frame_rx, eNB->proc.subframe_rx, IF4p5_PRACH, k);
|
||||
send_IF4p5(eNB, eNB->proc.frame_prach, eNB->proc.subframe_prach, IF4p5_PRACH, k);
|
||||
|
||||
// en = dB_fixed(signal_energy(&rxsigF[0][k],840));
|
||||
// if (en>60)
|
||||
// printf("PRACH: Frame %d, Subframe %d => %d dB\n",eNB->proc.frame_rx,eNB->proc.subframe_rx,en);
|
||||
return;
|
||||
} else if (eNB->node_function == NGFI_RCC_IF4p5) {
|
||||
k = (12*n_ra_prb) - 6*eNB->frame_parms.N_RB_UL;
|
||||
@@ -1299,7 +1304,12 @@ void rx_prach(PHY_VARS_eNB *eNB,
|
||||
// Adjust received rxsigF offset
|
||||
memmove((&rxsigF[0][k]),
|
||||
(&rxsigF[0][0]),
|
||||
839*2*sizeof(int16_t));
|
||||
839*2*sizeof(int16_t));
|
||||
|
||||
//en = dB_fixed(signal_energy(&rxsigF[0][k],840));
|
||||
// if (en>60)
|
||||
//printf("PRACH: Frame %d, Subframe %d => %d dB\n",eNB->proc.frame_rx,eNB->proc.subframe_rx,en);
|
||||
|
||||
}
|
||||
|
||||
// in case of RCC and prach received rx_thread wakes up prach
|
||||
@@ -1469,11 +1479,25 @@ void rx_prach(PHY_VARS_eNB *eNB,
|
||||
#endif
|
||||
// if (aa=1) write_output("prach_rxF_comp1.m","prach_rxF_comp1",prachF,1024,1,1);
|
||||
}// antennas_rx
|
||||
|
||||
#ifdef PRACH_DEBUG
|
||||
write_output("prach_ifft0.m","prach_t0",prach_ifft[0],2048,1,1);
|
||||
|
||||
if (en>40) {
|
||||
k = (12*n_ra_prb) - 6*eNB->frame_parms.N_RB_UL;
|
||||
|
||||
if (k<0)
|
||||
k+=(eNB->frame_parms.ofdm_symbol_size);
|
||||
|
||||
k*=12;
|
||||
k+=13;
|
||||
k*=2;
|
||||
printf("Dumping prach, k = %d (n_ra_prb %d)\n",k,n_ra_prb);
|
||||
write_output("rxsigF.m","prach_rxF",&rxsigF[0][k],840,1,1);
|
||||
write_output("prach_rxF_comp0.m","prach_rxF_comp0",prachF,1024,1,1);
|
||||
write_output("prach_ifft0.m","prach_t0",prach_ifft[0],1024,1,1);
|
||||
exit(-1);
|
||||
}
|
||||
#endif
|
||||
// write_output("prach_ifft1.m","prach_t1",prach_ifft[1],2048,1,1);
|
||||
|
||||
} // new dft
|
||||
|
||||
// check energy in nth time shift
|
||||
|
||||
+25
-13
@@ -160,10 +160,10 @@ enum transmission_access_mode {
|
||||
typedef enum {
|
||||
eNodeB_3GPP=0, // classical eNodeB function
|
||||
eNodeB_3GPP_BBU, // eNodeB with NGFI IF5
|
||||
NGFI_RRU_IF5, // NGFI_RRU with IF5
|
||||
NGFI_RRU_IF4p5, // NGFI_RRU (NGFI remote radio-unit, currently split at common - ue_specific interface, IF4p5)
|
||||
NGFI_RCC_IF4p5, // NGFI_RCC (NGFI radio cloud center, currently split at common - ue_specific interface, IF4p5)
|
||||
NGFI_RAU_IF4p5
|
||||
NGFI_RCC_IF4p5, // NGFI_RCC (NGFI radio cloud center)
|
||||
NGFI_RAU_IF4p5,
|
||||
NGFI_RRU_IF5, // NGFI_RRU (NGFI remote radio-unit,IF5)
|
||||
NGFI_RRU_IF4p5 // NGFI_RRU (NGFI remote radio-unit,IF4p5)
|
||||
} eNB_func_t;
|
||||
|
||||
typedef enum {
|
||||
@@ -252,34 +252,42 @@ typedef struct eNB_proc_t_s {
|
||||
/// \brief Instance count for rx processing thread.
|
||||
/// \internal This variable is protected by \ref mutex_prach.
|
||||
int instance_cnt_prach;
|
||||
/// \internal This variable is protected by \ref mutex_asynch_rxtx.
|
||||
int instance_cnt_asynch_rxtx;
|
||||
/// pthread structure for FH processing thread
|
||||
pthread_t pthread_FH;
|
||||
/// pthread structure for asychronous RX processing thread
|
||||
pthread_t pthread_asynch_rx;
|
||||
/// pthread structure for asychronous RX/TX processing thread
|
||||
pthread_t pthread_asynch_rxtx;
|
||||
/// flag to indicate first RX acquisition
|
||||
int first_rx;
|
||||
/// flag to indicate first TX transmission
|
||||
int first_tx;
|
||||
/// pthread attributes for FH processing thread
|
||||
pthread_attr_t attr_FH;
|
||||
/// pthread attributes for prach processing thread
|
||||
pthread_attr_t attr_prach;
|
||||
/// pthread attributes for asynchronous RX thread
|
||||
pthread_attr_t attr_asynch_rx;
|
||||
pthread_attr_t attr_asynch_rxtx;
|
||||
/// scheduling parameters for FH thread
|
||||
struct sched_param sched_param_FH;
|
||||
/// scheduling parameters for prach thread
|
||||
struct sched_param sched_param_prach;
|
||||
/// scheduling parameters for asynch_rx thread
|
||||
struct sched_param sched_param_asynch_rx;
|
||||
/// condition variable for FH thread
|
||||
/// scheduling parameters for asynch_rxtx thread
|
||||
struct sched_param sched_param_asynch_rxtx;
|
||||
/// pthread structure for PRACH thread
|
||||
pthread_t pthread_prach;
|
||||
/// condition variable for FH thread
|
||||
pthread_cond_t cond_FH;
|
||||
/// condition variable for PRACH processing thread;
|
||||
pthread_cond_t cond_prach;
|
||||
/// condition variable for asynch RX/TX thread
|
||||
pthread_cond_t cond_asynch_rxtx;
|
||||
/// mutex for FH
|
||||
pthread_mutex_t mutex_FH;
|
||||
/// mutex for PRACH thread
|
||||
pthread_mutex_t mutex_prach;
|
||||
/// mutex for asynch RX/TX thread
|
||||
pthread_mutex_t mutex_asynch_rxtx;
|
||||
/// set of scheduling variables RXn-TXnp4 threads
|
||||
eNB_rxtx_proc_t proc_rxtx[2];
|
||||
/// number of slave threads
|
||||
@@ -355,15 +363,17 @@ typedef struct PHY_VARS_eNB_s {
|
||||
eNB_proc_t proc;
|
||||
eNB_func_t node_function;
|
||||
eNB_timing_t node_timing;
|
||||
openair0_rf_map rf_map;
|
||||
int abstraction_flag;
|
||||
void (*do_prach)(struct PHY_VARS_eNB_s *eNB,eNB_proc_t *proc);
|
||||
void (*fep)(struct PHY_VARS_eNB_s *eNB,eNB_proc_t *proc);
|
||||
void (*do_prach)(struct PHY_VARS_eNB_s *eNB);
|
||||
void (*fep)(struct PHY_VARS_eNB_s *eNB);
|
||||
void (*proc_uespec_rx)(struct PHY_VARS_eNB_s *eNB,eNB_rxtx_proc_t *proc,const relaying_type_t r_type);
|
||||
void (*proc_tx)(struct PHY_VARS_eNB_s *eNB,eNB_rxtx_proc_t *proc,relaying_type_t r_type,PHY_VARS_RN *rn);
|
||||
void (*tx_fh)(struct PHY_VARS_eNB_s *eNB,eNB_rxtx_proc_t *proc);
|
||||
void (*rx_fh)(struct PHY_VARS_eNB_s *eNB,eNB_proc_t *proc,int *frame, int *subframe);
|
||||
void (*rx_fh)(struct PHY_VARS_eNB_s *eNB,int *frame, int *subframe);
|
||||
int (*start_rf)(struct PHY_VARS_eNB_s *eNB);
|
||||
int (*start_if)(struct PHY_VARS_eNB_s *eNB);
|
||||
void (*fh_asynch)(struct PHY_VARS_eNB_s *eNB,int *frame, int *subframe);
|
||||
uint8_t local_flag;
|
||||
uint32_t rx_total_gain_dB;
|
||||
LTE_DL_FRAME_PARMS frame_parms;
|
||||
@@ -570,6 +580,8 @@ typedef struct {
|
||||
uint8_t Mod_id;
|
||||
/// \brief Component carrier ID for this PHY instance
|
||||
uint8_t CC_id;
|
||||
/// \brief Mapping of CC_id antennas to cards
|
||||
openair0_rf_map rf_map;
|
||||
//uint8_t local_flag;
|
||||
/// \brief Indicator of current run mode of UE (normal_txrx, rx_calib_ue, no_L2_connect, debug_prach)
|
||||
runmode_t mode;
|
||||
|
||||
+1
-1
@@ -139,7 +139,7 @@ double beta2_dlsch[6][MCS_COUNT] = { {2.52163, 0.83231, 0.77472, 1.36536, 1.1682
|
||||
|
||||
*/
|
||||
|
||||
char eNB_functions[5][20]={"eNodeB_3GPP","eNodeB_3GPP_BBU","NGFI_RRU_IF5","NGFI_RRU_IF4","NGFI_RCC_IF4"};
|
||||
char eNB_functions[6][20]={"eNodeB_3GPP","eNodeB_3GPP_BBU","NGFI_RCC_IF4p5","NGFI_RAI_IF4p5","NGFI_RRU_IF5","NGFI_RRU_IF4p5",};
|
||||
char eNB_timing[2][20]={"synch_to_ext_device","synch_to_other"};
|
||||
|
||||
|
||||
|
||||
@@ -1107,6 +1107,8 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
|
||||
uint8_t smbv_alloc_cnt = 1;
|
||||
#endif
|
||||
|
||||
if ((fp->frame_type == TDD) && (subframe_select(fp,subframe)!=SF_DL)) return;
|
||||
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_TX+(subframe&1),1);
|
||||
start_meas(&eNB->phy_proc_tx);
|
||||
|
||||
@@ -1918,7 +1920,7 @@ void prach_procedures(PHY_VARS_eNB *eNB) {
|
||||
eNB->UE_stats[(uint32_t)UE_id].UE_timing_offset = preamble_delay_list[preamble_max]&0x1FFF; //limit to 13 (=11+2) bits
|
||||
|
||||
eNB->UE_stats[(uint32_t)UE_id].sector = 0;
|
||||
LOG_I(PHY,"[eNB %d/%d][RAPROC] Frame %d, subframe %d Initiating RA procedure (UE_id %d) with preamble %d, energy %d.%d dB, delay %d\n",
|
||||
LOG_D(PHY,"[eNB %d/%d][RAPROC] Frame %d, subframe %d Initiating RA procedure (UE_id %d) with preamble %d, energy %d.%d dB, delay %d\n",
|
||||
eNB->Mod_id,
|
||||
eNB->CC_id,
|
||||
frame,
|
||||
@@ -2490,8 +2492,9 @@ void cba_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq_p
|
||||
|
||||
}
|
||||
|
||||
void eNB_fep_full(PHY_VARS_eNB *eNB,eNB_proc_t *proc) {
|
||||
void eNB_fep_full(PHY_VARS_eNB *eNB) {
|
||||
|
||||
eNB_proc_t *proc = &eNB->proc;
|
||||
int l;
|
||||
LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
|
||||
|
||||
@@ -2503,7 +2506,7 @@ void eNB_fep_full(PHY_VARS_eNB *eNB,eNB_proc_t *proc) {
|
||||
&eNB->common_vars,
|
||||
l,
|
||||
proc->subframe_rx<<1,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
);
|
||||
slot_fep_ul(fp,
|
||||
@@ -2519,14 +2522,13 @@ void eNB_fep_full(PHY_VARS_eNB *eNB,eNB_proc_t *proc) {
|
||||
|
||||
if (eNB->node_function == NGFI_RRU_IF4p5) {
|
||||
/// **** send_IF4 of rxdataF to RCC (no prach now) **** ///
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4, 1 );
|
||||
send_IF4p5(eNB, proc->frame_rx, proc->subframe_rx, IF4p5_PULFFT, 0);
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4, 0 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void eNB_fep_rru_if5(PHY_VARS_eNB *eNB,eNB_proc_t *proc) {
|
||||
void eNB_fep_rru_if5(PHY_VARS_eNB *eNB) {
|
||||
|
||||
eNB_proc_t *proc=&eNB->proc;
|
||||
uint8_t seqno=0;
|
||||
|
||||
/// **** send_IF5 of rxdata to BBU **** ///
|
||||
@@ -2536,8 +2538,9 @@ void eNB_fep_rru_if5(PHY_VARS_eNB *eNB,eNB_proc_t *proc) {
|
||||
|
||||
}
|
||||
|
||||
void do_prach(PHY_VARS_eNB *eNB,eNB_proc_t *proc) {
|
||||
void do_prach(PHY_VARS_eNB *eNB) {
|
||||
|
||||
eNB_proc_t *proc = &eNB->proc;
|
||||
LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
|
||||
|
||||
// check if we have to detect PRACH first
|
||||
@@ -2581,11 +2584,14 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB){
|
||||
|
||||
|
||||
eNB_proc_t *proc = &eNB->proc;
|
||||
LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
|
||||
|
||||
const int subframe = proc->subframe_rx;
|
||||
const int frame = proc->frame_rx;
|
||||
|
||||
|
||||
if ((fp->frame_type == TDD) && (subframe_select(fp,subframe)!=SF_UL)) return;
|
||||
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_COMMON+(subframe&1), 1 );
|
||||
|
||||
start_meas(&eNB->phy_proc_rx);
|
||||
@@ -2594,9 +2600,9 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB){
|
||||
LOG_D(PHY,"[eNB %d] Frame %d: Doing phy_procedures_eNB_common_RX(%d)\n",eNB->Mod_id,frame,subframe);
|
||||
|
||||
|
||||
if (eNB->fep) eNB->fep(eNB,proc);
|
||||
if (eNB->fep) eNB->fep(eNB);
|
||||
|
||||
if (eNB->do_prach) eNB->do_prach(eNB,proc);
|
||||
if (eNB->do_prach) eNB->do_prach(eNB);
|
||||
|
||||
|
||||
|
||||
@@ -2619,6 +2625,8 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
|
||||
const int subframe = proc->subframe_rx;
|
||||
const int frame = proc->frame_rx;
|
||||
|
||||
if ((fp->frame_type == TDD) && (subframe_select(fp,subframe)!=SF_UL)) return;
|
||||
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_UESPEC+(subframe&1), 1 );
|
||||
start_meas(&eNB->phy_proc_rx);
|
||||
#ifdef DEBUG_PHY_PROC
|
||||
|
||||
Reference in New Issue
Block a user