cleanup
This commit is contained in:
@@ -2418,7 +2418,7 @@ target_link_libraries(gnbscope ${XFORMS_LIBRARIES})
|
|||||||
add_library(rfsimulator MODULE
|
add_library(rfsimulator MODULE
|
||||||
${OPENAIR_TARGETS}/ARCH/rfsimulator/simulator.c
|
${OPENAIR_TARGETS}/ARCH/rfsimulator/simulator.c
|
||||||
)
|
)
|
||||||
target_link_libraries(rfsimulator SIMU ${ATLAS_LIBRARIES})
|
target_link_libraries(rfsimulator ${ATLAS_LIBRARIES})
|
||||||
|
|
||||||
add_library(oai_iqplayer MODULE
|
add_library(oai_iqplayer MODULE
|
||||||
${OPENAIR_TARGETS}/ARCH/iqplayer/iqplayer_lib.c
|
${OPENAIR_TARGETS}/ARCH/iqplayer/iqplayer_lib.c
|
||||||
@@ -3000,7 +3000,7 @@ if (${T_TRACER})
|
|||||||
PHY_COMMON PHY PHY_UE PHY_NR PHY_NR_COMMON PHY_NR_UE PHY_RU PHY_MEX
|
PHY_COMMON PHY PHY_UE PHY_NR PHY_NR_COMMON PHY_NR_UE PHY_RU PHY_MEX
|
||||||
L2 L2_LTE L2_NR L2_UE NR_L2_UE MAC_NR_COMMON MAC_NR MAC_UE_NR
|
L2 L2_LTE L2_NR L2_UE NR_L2_UE MAC_NR_COMMON MAC_NR MAC_UE_NR
|
||||||
CN_UTILS GTPV1U SCTP_CLIENT MME_APP UDP LIB_NAS_UE NB_IoT LFDS LFDS7 SIMU SIMU_ETH OPENAIR0_LIB
|
CN_UTILS GTPV1U SCTP_CLIENT MME_APP UDP LIB_NAS_UE NB_IoT LFDS LFDS7 SIMU SIMU_ETH OPENAIR0_LIB
|
||||||
ldpc_orig ldpc_optim ldpc_optim8seg ldpc PROTO_AGENT)
|
ldpc_orig ldpc_optim ldpc_optim8seg ldpc PROTO_AGENT dfts)
|
||||||
if (TARGET ${i})
|
if (TARGET ${i})
|
||||||
add_dependencies(${i} generate_T)
|
add_dependencies(${i} generate_T)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -112,18 +112,12 @@ int lte_est_timing_advance(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int lte_est_timing_advance_pusch(PHY_VARS_eNB *eNB,
|
int lte_est_timing_advance_pusch(LTE_DL_FRAME_PARMS *frame_parms,
|
||||||
module_id_t UE_id)
|
int32_t **ul_ch_estimates_time)
|
||||||
{
|
{
|
||||||
int temp, i, aa, max_pos=0, max_val=0;
|
int temp, i, aa, max_pos=0, max_val=0;
|
||||||
short Re,Im;
|
short Re,Im;
|
||||||
|
|
||||||
RU_t *ru;
|
|
||||||
ru = RC.ru[UE_id];
|
|
||||||
LTE_DL_FRAME_PARMS *frame_parms = (eNB==NULL) ? ru->frame_parms : &eNB->frame_parms;
|
|
||||||
LTE_eNB_PUSCH *eNB_pusch_vars = (eNB!=NULL) ? eNB->pusch_vars[UE_id] : (LTE_eNB_PUSCH*)NULL;
|
|
||||||
RU_CALIBRATION *calibration = &ru->calibration;
|
|
||||||
int32_t **ul_ch_estimates_time = (eNB==NULL) ? calibration->drs_ch_estimates_time : eNB_pusch_vars->drs_ch_estimates_time;
|
|
||||||
uint8_t cyclic_shift = 0;
|
uint8_t cyclic_shift = 0;
|
||||||
int sync_pos = (frame_parms->ofdm_symbol_size-cyclic_shift*frame_parms->ofdm_symbol_size/12)%(frame_parms->ofdm_symbol_size);
|
int sync_pos = (frame_parms->ofdm_symbol_size-cyclic_shift*frame_parms->ofdm_symbol_size/12)%(frame_parms->ofdm_symbol_size);
|
||||||
|
|
||||||
@@ -149,7 +143,7 @@ int lte_est_timing_advance_pusch(PHY_VARS_eNB *eNB,
|
|||||||
max_pos = max_pos-frame_parms->ofdm_symbol_size;
|
max_pos = max_pos-frame_parms->ofdm_symbol_size;
|
||||||
|
|
||||||
//#ifdef DEBUG_PHY
|
//#ifdef DEBUG_PHY
|
||||||
LOG_D(PHY,"frame %d: max_pos = %d, sync_pos=%d\n",eNB->proc.frame_rx,max_pos,sync_pos);
|
LOG_D(PHY,"max_pos = %d, sync_pos=%d\n",max_pos,sync_pos);
|
||||||
//#endif //DEBUG_PHY
|
//#endif //DEBUG_PHY
|
||||||
|
|
||||||
return max_pos - sync_pos;
|
return max_pos - sync_pos;
|
||||||
|
|||||||
@@ -220,8 +220,12 @@ void phy_adjust_gain (PHY_VARS_UE *phy_vars_ue,
|
|||||||
uint32_t rx_power_fil_dB,
|
uint32_t rx_power_fil_dB,
|
||||||
unsigned char eNB_id);
|
unsigned char eNB_id);
|
||||||
|
|
||||||
int lte_ul_channel_estimation(PHY_VARS_eNB *phy_vars_eNB,
|
int32_t lte_ul_channel_estimation(LTE_DL_FRAME_PARMS *frame_parms,
|
||||||
L1_rxtx_proc_t *proc,
|
L1_rxtx_proc_t *proc,
|
||||||
|
LTE_eNB_ULSCH_t * ulsch,
|
||||||
|
int32_t **ul_ch_estimates,
|
||||||
|
int32_t **ul_ch_estimates_time,
|
||||||
|
int32_t **rxdataF_ext,
|
||||||
module_id_t UE_id,
|
module_id_t UE_id,
|
||||||
uint8_t l,
|
uint8_t l,
|
||||||
uint8_t Ns);
|
uint8_t Ns);
|
||||||
@@ -258,7 +262,8 @@ int lte_est_timing_advance(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
unsigned char number_of_cards,
|
unsigned char number_of_cards,
|
||||||
short coef);
|
short coef);
|
||||||
|
|
||||||
int lte_est_timing_advance_pusch(PHY_VARS_eNB* phy_vars_eNB,module_id_t UE_id);
|
int lte_est_timing_advance_pusch(LTE_DL_FRAME_PARMS *frame_parms,
|
||||||
|
int32_t **ul_ch_estimates_time);
|
||||||
|
|
||||||
void lte_eNB_I0_measurements(PHY_VARS_eNB *phy_vars_eNB,
|
void lte_eNB_I0_measurements(PHY_VARS_eNB *phy_vars_eNB,
|
||||||
int subframe,
|
int subframe,
|
||||||
|
|||||||
@@ -34,23 +34,17 @@ static int16_t ru_90c[2*128] = {32767, 0,32766, -402,32758, -804,32746, -1206,32
|
|||||||
|
|
||||||
#define SCALE 0x3FFF
|
#define SCALE 0x3FFF
|
||||||
|
|
||||||
int32_t lte_ul_channel_estimation(PHY_VARS_eNB *eNB,
|
int32_t lte_ul_channel_estimation(LTE_DL_FRAME_PARMS *frame_parms,
|
||||||
L1_rxtx_proc_t *proc,
|
L1_rxtx_proc_t *proc,
|
||||||
|
LTE_eNB_ULSCH_t * ulsch,
|
||||||
|
int32_t **ul_ch_estimates,
|
||||||
|
int32_t **ul_ch_estimates_time,
|
||||||
|
int32_t **rxdataF_ext,
|
||||||
module_id_t UE_id,
|
module_id_t UE_id,
|
||||||
unsigned char l,
|
unsigned char l,
|
||||||
unsigned char Ns) {
|
unsigned char Ns) {
|
||||||
RU_t *ru;
|
AssertFatal(ul_ch_estimates != NULL, "ul_ch_estimates is null ");
|
||||||
ru = RC.ru[UE_id];
|
|
||||||
LTE_DL_FRAME_PARMS *frame_parms = (eNB!=NULL) ? &eNB->frame_parms : ru->frame_parms;
|
|
||||||
LTE_eNB_PUSCH *pusch_vars = (eNB!=NULL) ? eNB->pusch_vars[UE_id] : NULL;
|
|
||||||
RU_CALIBRATION *calibration = &ru->calibration;
|
|
||||||
int32_t **ul_ch_estimates = (eNB!=NULL) ? pusch_vars->drs_ch_estimates : calibration->drs_ch_estimates;
|
|
||||||
AssertFatal(ul_ch_estimates != NULL, "ul_ch_estimates is null (eNB %p, pusch %p, pusch->drs_ch_estimates %p, pusch->drs_ch_estimates[0] %p ul_ch_estimates %p UE_id %d)\n",eNB,pusch_vars,
|
|
||||||
pusch_vars->drs_ch_estimates,pusch_vars->drs_ch_estimates[0],ul_ch_estimates,UE_id);
|
|
||||||
int32_t **ul_ch_estimates_time = (eNB!=NULL) ? pusch_vars->drs_ch_estimates_time : calibration->drs_ch_estimates_time;
|
|
||||||
AssertFatal(ul_ch_estimates_time != NULL, "ul_ch_estimates_time is null\n");
|
AssertFatal(ul_ch_estimates_time != NULL, "ul_ch_estimates_time is null\n");
|
||||||
int32_t **rxdataF_ext = (eNB!=NULL) ? pusch_vars->rxdataF_ext : calibration->rxdataF_ext;
|
|
||||||
|
|
||||||
int subframe = proc->subframe_rx;
|
int subframe = proc->subframe_rx;
|
||||||
|
|
||||||
uint8_t harq_pid;
|
uint8_t harq_pid;
|
||||||
@@ -83,16 +77,16 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *eNB,
|
|||||||
#endif
|
#endif
|
||||||
int32_t temp_in_ifft_0[2048*2] __attribute__((aligned(32)));
|
int32_t temp_in_ifft_0[2048*2] __attribute__((aligned(32)));
|
||||||
|
|
||||||
if (eNB->ulsch[UE_id]->ue_type > 0) harq_pid = 0;
|
if (ulsch->ue_type > 0) harq_pid = 0;
|
||||||
else {
|
else {
|
||||||
harq_pid = subframe2harq_pid(frame_parms,proc->frame_rx,subframe);
|
harq_pid = subframe2harq_pid(frame_parms,proc->frame_rx,subframe);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t N_rb_alloc = eNB->ulsch[UE_id]->harq_processes[harq_pid]->nb_rb;
|
uint16_t N_rb_alloc = ulsch->harq_processes[harq_pid]->nb_rb;
|
||||||
int32_t tmp_estimates[N_rb_alloc*12] __attribute__((aligned(16)));
|
int32_t tmp_estimates[N_rb_alloc*12] __attribute__((aligned(16)));
|
||||||
Msc_RS = N_rb_alloc*12;
|
Msc_RS = N_rb_alloc*12;
|
||||||
cyclic_shift = (frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.cyclicShift +
|
cyclic_shift = (frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.cyclicShift +
|
||||||
eNB->ulsch[UE_id]->harq_processes[harq_pid]->n_DMRS2 +
|
ulsch->harq_processes[harq_pid]->n_DMRS2 +
|
||||||
frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.nPRS[(subframe<<1)+Ns]) % 12;
|
frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.nPRS[(subframe<<1)+Ns]) % 12;
|
||||||
Msc_idx_ptr = (uint16_t *) bsearch(&Msc_RS, dftsizes, 34, sizeof(uint16_t), compareints);
|
Msc_idx_ptr = (uint16_t *) bsearch(&Msc_RS, dftsizes, 34, sizeof(uint16_t), compareints);
|
||||||
|
|
||||||
@@ -276,7 +270,7 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *eNB,
|
|||||||
#if T_TRACER
|
#if T_TRACER
|
||||||
|
|
||||||
if (aa == 0)
|
if (aa == 0)
|
||||||
T(T_ENB_PHY_UL_CHANNEL_ESTIMATE, T_INT(0), T_INT(eNB->ulsch[UE_id]->rnti),
|
T(T_ENB_PHY_UL_CHANNEL_ESTIMATE, T_INT(0), T_INT(ulsch->rnti),
|
||||||
T_INT(proc->frame_rx), T_INT(subframe),
|
T_INT(proc->frame_rx), T_INT(subframe),
|
||||||
T_INT(0), T_BUFFER(ul_ch_estimates_time[0], 512 * 4));
|
T_INT(0), T_BUFFER(ul_ch_estimates_time[0], 512 * 4));
|
||||||
|
|
||||||
|
|||||||
@@ -1047,7 +1047,11 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
|
|||||||
l%(frame_parms->symbols_per_tti/2),
|
l%(frame_parms->symbols_per_tti/2),
|
||||||
l/(frame_parms->symbols_per_tti/2),
|
l/(frame_parms->symbols_per_tti/2),
|
||||||
frame_parms);
|
frame_parms);
|
||||||
lte_ul_channel_estimation(eNB,proc,
|
lte_ul_channel_estimation(&eNB->frame_parms,proc,
|
||||||
|
eNB->ulsch[UE_id],
|
||||||
|
eNB->pusch_vars[UE_id]->drs_ch_estimates,
|
||||||
|
eNB->pusch_vars[UE_id]->drs_ch_estimates_time,
|
||||||
|
eNB->pusch_vars[UE_id]->rxdataF_ext,
|
||||||
UE_id,
|
UE_id,
|
||||||
l%(frame_parms->symbols_per_tti/2),
|
l%(frame_parms->symbols_per_tti/2),
|
||||||
l/(frame_parms->symbols_per_tti/2));
|
l/(frame_parms->symbols_per_tti/2));
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB,
|
|||||||
* Defining cyclic shift hopping TS 38.211 Subclause 6.3.2.2.2
|
* Defining cyclic shift hopping TS 38.211 Subclause 6.3.2.2.2
|
||||||
*/
|
*/
|
||||||
// alpha is cyclic shift
|
// alpha is cyclic shift
|
||||||
double alpha;
|
//double alpha;
|
||||||
// lnormal is the OFDM symbol number in the PUCCH transmission where l=0 corresponds to the first OFDM symbol of the PUCCH transmission
|
// lnormal is the OFDM symbol number in the PUCCH transmission where l=0 corresponds to the first OFDM symbol of the PUCCH transmission
|
||||||
//uint8_t lnormal;
|
//uint8_t lnormal;
|
||||||
// lprime is the index of the OFDM symbol in the slot that corresponds to the first OFDM symbol of the PUCCH transmission in the slot given by [5, TS 38.213]
|
// lprime is the index of the OFDM symbol in the slot that corresponds to the first OFDM symbol of the PUCCH transmission in the slot given by [5, TS 38.213]
|
||||||
@@ -193,7 +193,7 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB,
|
|||||||
for(i=0;i<nr_sequences;i++){
|
for(i=0;i<nr_sequences;i++){
|
||||||
// we proceed to calculate alpha according to TS 38.211 Subclause 6.3.2.2.2
|
// we proceed to calculate alpha according to TS 38.211 Subclause 6.3.2.2.2
|
||||||
for (l=0; l<pucch_pdu->nr_of_symbols; l++){
|
for (l=0; l<pucch_pdu->nr_of_symbols; l++){
|
||||||
alpha = nr_cyclic_shift_hopping(pucch_pdu->hopping_id,pucch_pdu->initial_cyclic_shift,mcs[i],l,pucch_pdu->start_symbol_index,slot);
|
double alpha = nr_cyclic_shift_hopping(pucch_pdu->hopping_id,pucch_pdu->initial_cyclic_shift,mcs[i],l,pucch_pdu->start_symbol_index,slot);
|
||||||
#ifdef DEBUG_NR_PUCCH_RX
|
#ifdef DEBUG_NR_PUCCH_RX
|
||||||
printf("\t [nr_generate_pucch0] sequence generation \tu=%d \tv=%d \talpha=%lf \t(for symbol l=%d/%d,mcs %d)\n",u,v,alpha,l,l+pucch_pdu->start_symbol_index,mcs[i]);
|
printf("\t [nr_generate_pucch0] sequence generation \tu=%d \tv=%d \talpha=%lf \t(for symbol l=%d/%d,mcs %d)\n",u,v,alpha,l,l+pucch_pdu->start_symbol_index,mcs[i]);
|
||||||
printf("lut output %d\n",gNB->pucch0_lut.lut[cs_ind][slot][l+pucch_pdu->start_symbol_index]);
|
printf("lut output %d\n",gNB->pucch0_lut.lut[cs_ind][slot][l+pucch_pdu->start_symbol_index]);
|
||||||
@@ -266,7 +266,7 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB,
|
|||||||
|
|
||||||
const int16_t *x_re = table_5_2_2_2_2_Re[u],*x_im = table_5_2_2_2_2_Im[u];
|
const int16_t *x_re = table_5_2_2_2_2_Re[u],*x_im = table_5_2_2_2_2_Im[u];
|
||||||
int16_t xr[24] __attribute__((aligned(32)));
|
int16_t xr[24] __attribute__((aligned(32)));
|
||||||
int16_t xrt[24] __attribute__((aligned(32)));
|
//int16_t xrt[24] __attribute__((aligned(32)));
|
||||||
int32_t xrtmag=0;
|
int32_t xrtmag=0;
|
||||||
int maxpos=0;
|
int maxpos=0;
|
||||||
int n2=0;
|
int n2=0;
|
||||||
@@ -959,7 +959,7 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
|
|||||||
|
|
||||||
int32_t **rxdataF = gNB->common_vars.rxdataF;
|
int32_t **rxdataF = gNB->common_vars.rxdataF;
|
||||||
NR_DL_FRAME_PARMS *frame_parms = &gNB->frame_parms;
|
NR_DL_FRAME_PARMS *frame_parms = &gNB->frame_parms;
|
||||||
pucch_GroupHopping_t pucch_GroupHopping = pucch_pdu->group_hop_flag + (pucch_pdu->sequence_hop_flag<<1);
|
//pucch_GroupHopping_t pucch_GroupHopping = pucch_pdu->group_hop_flag + (pucch_pdu->sequence_hop_flag<<1);
|
||||||
|
|
||||||
AssertFatal(pucch_pdu->nr_of_symbols==1 || pucch_pdu->nr_of_symbols==2,
|
AssertFatal(pucch_pdu->nr_of_symbols==1 || pucch_pdu->nr_of_symbols==2,
|
||||||
"Illegal number of symbols for PUCCH 2 %d\n",pucch_pdu->nr_of_symbols);
|
"Illegal number of symbols for PUCCH 2 %d\n",pucch_pdu->nr_of_symbols);
|
||||||
|
|||||||
@@ -225,7 +225,6 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch,
|
|||||||
unsigned int crc;
|
unsigned int crc;
|
||||||
NR_UL_UE_HARQ_t *harq_process;
|
NR_UL_UE_HARQ_t *harq_process;
|
||||||
uint16_t nb_rb ;
|
uint16_t nb_rb ;
|
||||||
uint8_t nb_symb_sch ;
|
|
||||||
uint32_t A, Z, F;
|
uint32_t A, Z, F;
|
||||||
uint32_t *pz;
|
uint32_t *pz;
|
||||||
uint8_t mod_order;
|
uint8_t mod_order;
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
|
|||||||
uint8_t dmrs_type, nb_dmrs_re_per_rb, number_of_symbols, mcs, Nl;
|
uint8_t dmrs_type, nb_dmrs_re_per_rb, number_of_symbols, mcs, Nl;
|
||||||
int ap, start_symbol, Nid_cell, i;
|
int ap, start_symbol, Nid_cell, i;
|
||||||
int sample_offsetF, N_RE_prime, N_PRB_oh;
|
int sample_offsetF, N_RE_prime, N_PRB_oh;
|
||||||
uint16_t n_rnti, ul_dmrs_symb_pos;
|
uint16_t ul_dmrs_symb_pos;
|
||||||
uint8_t data_existing =0;
|
uint8_t data_existing =0;
|
||||||
uint8_t L_ptrs, K_ptrs; // PTRS parameters
|
uint8_t L_ptrs, K_ptrs; // PTRS parameters
|
||||||
uint16_t beta_ptrs; // PTRS parameter related to power control
|
uint16_t beta_ptrs; // PTRS parameter related to power control
|
||||||
|
|||||||
@@ -911,19 +911,18 @@ void reset_stats_gNB(FL_OBJECT *button,
|
|||||||
|
|
||||||
|
|
||||||
static void *scope_thread_gNB(void *arg) {
|
static void *scope_thread_gNB(void *arg) {
|
||||||
int UE_id;
|
scopeParms_t * p=(scopeParms_t *) arg;
|
||||||
int ue_cnt=0;
|
|
||||||
//# ifdef ENABLE_XFORMS_WRITE_STATS
|
//# ifdef ENABLE_XFORMS_WRITE_STATS
|
||||||
// FILE *gNB_stats = fopen("gNB_stats.txt", "w");
|
// FILE *gNB_stats = fopen("gNB_stats.txt", "w");
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
while (!oai_exit) {
|
while (!oai_exit) {
|
||||||
ue_cnt=0;
|
int ue_cnt=0;
|
||||||
|
|
||||||
for(UE_id=0; UE_id<NUMBER_OF_UE_MAX; UE_id++) {
|
for(int UE_id=0; UE_id<NUMBER_OF_UE_MAX; UE_id++) {
|
||||||
if ((ue_cnt<scope_enb_num_ue)) {
|
if ((ue_cnt<scope_enb_num_ue)) {
|
||||||
//this function needs to be written
|
//this function needs to be written
|
||||||
phy_scope_gNB(form_gnb[ue_cnt], RC.gNB[0], RC.ru[0], UE_id);
|
phy_scope_gNB(form_gnb[ue_cnt], p->gNB, p->ru, UE_id);
|
||||||
ue_cnt++;
|
ue_cnt++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -983,5 +982,5 @@ void startScope(scopeParms_t * p) {
|
|||||||
} // UE_id
|
} // UE_id
|
||||||
|
|
||||||
pthread_t forms_thread;
|
pthread_t forms_thread;
|
||||||
threadCreate(&forms_thread, scope_thread_gNB, NULL, "scope", -1, OAI_PRIORITY_RT_LOW);
|
threadCreate(&forms_thread, scope_thread_gNB, p, "scope", -1, OAI_PRIORITY_RT_LOW);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,19 +69,13 @@ typedef struct {
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
int *argc;
|
int *argc;
|
||||||
char **argv;
|
char **argv;
|
||||||
|
RU_t* ru;
|
||||||
|
PHY_VARS_gNB *gNB;
|
||||||
} scopeParms_t;
|
} scopeParms_t;
|
||||||
|
|
||||||
extern unsigned char scope_enb_num_ue;
|
extern unsigned char scope_enb_num_ue;
|
||||||
FD_phy_scope_gnb * create_phy_scope_gnb( void );
|
|
||||||
FD_phy_scope_nrue * create_phy_scope_nrue( void );
|
FD_phy_scope_nrue * create_phy_scope_nrue( void );
|
||||||
|
|
||||||
|
|
||||||
void phy_scope_gNB(FD_phy_scope_gnb *form,
|
|
||||||
PHY_VARS_gNB *phy_vars_gnb,
|
|
||||||
RU_t *phy_vars_ru,
|
|
||||||
int UE_id);
|
|
||||||
|
|
||||||
|
|
||||||
void phy_scope_nrUE(FD_phy_scope_nrue *form,
|
void phy_scope_nrUE(FD_phy_scope_nrue *form,
|
||||||
PHY_VARS_NR_UE *phy_vars_ue,
|
PHY_VARS_NR_UE *phy_vars_ue,
|
||||||
int eNB_id,
|
int eNB_id,
|
||||||
@@ -91,6 +85,5 @@ void phy_scope_nrUE(FD_phy_scope_nrue *form,
|
|||||||
|
|
||||||
void startScope(scopeParms_t * p);
|
void startScope(scopeParms_t * p);
|
||||||
|
|
||||||
|
|
||||||
extern RAN_CONTEXT_t RC;
|
extern RAN_CONTEXT_t RC;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1419,7 +1419,7 @@ void fill_rx_indication(PHY_VARS_eNB *eNB,
|
|||||||
pdu->rx_indication_rel8.offset = 1; // DJP - I dont understand - but broken unless 1 ???? 0; // filled in at the end of the UL_INFO formation
|
pdu->rx_indication_rel8.offset = 1; // DJP - I dont understand - but broken unless 1 ???? 0; // filled in at the end of the UL_INFO formation
|
||||||
pdu->data = eNB->ulsch[UE_id]->harq_processes[harq_pid]->decodedBytes;
|
pdu->data = eNB->ulsch[UE_id]->harq_processes[harq_pid]->decodedBytes;
|
||||||
// estimate timing advance for MAC
|
// estimate timing advance for MAC
|
||||||
sync_pos = lte_est_timing_advance_pusch(eNB,UE_id);
|
sync_pos = lte_est_timing_advance_pusch(&eNB->frame_parms, eNB->pusch_vars[UE_id]->drs_ch_estimates_time);
|
||||||
timing_advance_update = sync_pos; // - eNB->frame_parms.nb_prefix_samples/4; //to check
|
timing_advance_update = sync_pos; // - eNB->frame_parms.nb_prefix_samples/4; //to check
|
||||||
|
|
||||||
// if (timing_advance_update > 10) { dump_ulsch(eNB,frame,subframe,UE_id); exit(-1);}
|
// if (timing_advance_update > 10) { dump_ulsch(eNB,frame,subframe,UE_id); exit(-1);}
|
||||||
|
|||||||
@@ -693,12 +693,6 @@ void ru_fep_full_2thread(RU_t *ru,
|
|||||||
3/(fp->symbols_per_tti/2),// Ns = slot number
|
3/(fp->symbols_per_tti/2),// Ns = slot number
|
||||||
fp);
|
fp);
|
||||||
|
|
||||||
/*lte_ul_channel_estimation((PHY_VARS_eNB *)NULL,
|
|
||||||
proc,
|
|
||||||
ru->idx,
|
|
||||||
3%(fp->symbols_per_tti/2),
|
|
||||||
3/(fp->symbols_per_tti/2));
|
|
||||||
*/
|
|
||||||
lte_ul_channel_estimation_RRU(fp,
|
lte_ul_channel_estimation_RRU(fp,
|
||||||
calibration->drs_ch_estimates,
|
calibration->drs_ch_estimates,
|
||||||
calibration->drs_ch_estimates_time,
|
calibration->drs_ch_estimates_time,
|
||||||
@@ -713,7 +707,7 @@ void ru_fep_full_2thread(RU_t *ru,
|
|||||||
0,//interpolate,
|
0,//interpolate,
|
||||||
0 /*eNB->ulsch[ru->idx]->rnti rnti or ru->ulsch[eNB_id]->rnti*/);
|
0 /*eNB->ulsch[ru->idx]->rnti rnti or ru->ulsch[eNB_id]->rnti*/);
|
||||||
|
|
||||||
check_sync_pos = lte_est_timing_advance_pusch((PHY_VARS_eNB *)NULL, ru->idx);
|
check_sync_pos = lte_est_timing_advance_pusch(ru->frame_parms, ru->calibration.drs_ch_estimates_time);
|
||||||
if (ru->state == RU_CHECK_SYNC) {
|
if (ru->state == RU_CHECK_SYNC) {
|
||||||
if ((check_sync_pos >= 0 && check_sync_pos<8) || (check_sync_pos < 0 && check_sync_pos>-8)) {
|
if ((check_sync_pos >= 0 && check_sync_pos<8) || (check_sync_pos < 0 && check_sync_pos>-8)) {
|
||||||
LOG_I(PHY,"~~~~~~~~~~~ check_sync_pos %d, frame %d, cnt %d\n",check_sync_pos,proc->frame_rx,ru->wait_check);
|
LOG_I(PHY,"~~~~~~~~~~~ check_sync_pos %d, frame %d, cnt %d\n",check_sync_pos,proc->frame_rx,ru->wait_check);
|
||||||
|
|||||||
@@ -1579,10 +1579,6 @@ int flexran_agent_unregister_mac_xface(mid_t mod_id)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
AGENT_MAC_xface *flexran_agent_get_mac_xface(mid_t mod_id)
|
|
||||||
{
|
|
||||||
return agent_mac_xface[mod_id];
|
|
||||||
}
|
|
||||||
|
|
||||||
void flexran_create_config_structures(mid_t mod_id)
|
void flexran_create_config_structures(mid_t mod_id)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -921,7 +921,4 @@ int flexran_agent_unregister_rrc_xface(mid_t mod_id)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
AGENT_RRC_xface *flexran_agent_get_rrc_xface(mid_t mod_id)
|
|
||||||
{
|
|
||||||
return agent_rrc_xface[mod_id];
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -41,10 +41,15 @@
|
|||||||
AGENT_PHY_xface *flexran_agent_get_phy_xface(mid_t mod_id);
|
AGENT_PHY_xface *flexran_agent_get_phy_xface(mid_t mod_id);
|
||||||
|
|
||||||
/* Control module interface for the communication of the MAC Control Module with the agent */
|
/* Control module interface for the communication of the MAC Control Module with the agent */
|
||||||
AGENT_MAC_xface *flexran_agent_get_mac_xface(mid_t mod_id);
|
|
||||||
|
extern AGENT_MAC_xface *agent_mac_xface[NUM_MAX_ENB];
|
||||||
|
#define flexran_agent_get_mac_xface(mod_id) (agent_mac_xface[mod_id])
|
||||||
|
/* Control module interface for the communication of the RRC Control Module with the agent */
|
||||||
|
|
||||||
/* Control module interface for the communication of the RRC Control Module with the agent */
|
/* Control module interface for the communication of the RRC Control Module with the agent */
|
||||||
AGENT_RRC_xface *flexran_agent_get_rrc_xface(mid_t mod_id);
|
// AGENT_RRC_xface *flexran_agent_get_rrc_xface(mid_t mod_id);
|
||||||
|
extern AGENT_RRC_xface *agent_rrc_xface[NUM_MAX_ENB];
|
||||||
|
#define flexran_agent_get_rrc_xface(mod_id) (agent_rrc_xface[mod_id])
|
||||||
|
|
||||||
/* Control module interface for the communication of the RRC Control Module with the agent */
|
/* Control module interface for the communication of the RRC Control Module with the agent */
|
||||||
AGENT_PDCP_xface *flexran_agent_get_pdcp_xface(mid_t mod_id);
|
AGENT_PDCP_xface *flexran_agent_get_pdcp_xface(mid_t mod_id);
|
||||||
|
|||||||
@@ -131,7 +131,6 @@ void *gNB_app_task(void *args_p)
|
|||||||
uint32_t gnb_nb = RC.nb_nr_inst;
|
uint32_t gnb_nb = RC.nb_nr_inst;
|
||||||
uint32_t gnb_id_start = 0;
|
uint32_t gnb_id_start = 0;
|
||||||
uint32_t gnb_id_end = gnb_id_start + gnb_nb;
|
uint32_t gnb_id_end = gnb_id_start + gnb_nb;
|
||||||
uint32_t x2_register_gnb_pending = 0;
|
|
||||||
uint32_t gnb_id;
|
uint32_t gnb_id;
|
||||||
MessageDef *msg_p = NULL;
|
MessageDef *msg_p = NULL;
|
||||||
const char *msg_name = NULL;
|
const char *msg_name = NULL;
|
||||||
@@ -170,7 +169,7 @@ void *gNB_app_task(void *args_p)
|
|||||||
|
|
||||||
if (is_x2ap_enabled() ) { //&& !NODE_IS_DU(RC.rrc[0]->node_type)
|
if (is_x2ap_enabled() ) { //&& !NODE_IS_DU(RC.rrc[0]->node_type)
|
||||||
LOG_I(X2AP, "X2AP enabled \n");
|
LOG_I(X2AP, "X2AP enabled \n");
|
||||||
x2_register_gnb_pending = gNB_app_register_x2 (gnb_id_start, gnb_id_end);
|
__attribute__((unused)) uint32_t x2_register_gnb_pending = gNB_app_register_x2 (gnb_id_start, gnb_id_end);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (EPC_MODE_ENABLED) {
|
if (EPC_MODE_ENABLED) {
|
||||||
|
|||||||
@@ -2670,7 +2670,6 @@ void nr_ue_send_sdu(module_id_t module_idP,
|
|||||||
LOG_D(MAC, "Handling PDU frame %d slot %d\n", frameP, slotP);
|
LOG_D(MAC, "Handling PDU frame %d slot %d\n", frameP, slotP);
|
||||||
|
|
||||||
uint8_t * pduP = pdu;
|
uint8_t * pduP = pdu;
|
||||||
NR_UE_MAC_INST_t *UE_mac_inst = get_mac_inst(module_idP);
|
|
||||||
|
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SEND_SDU, VCD_FUNCTION_IN);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SEND_SDU, VCD_FUNCTION_IN);
|
||||||
|
|
||||||
|
|||||||
@@ -375,7 +375,6 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
|
|||||||
int CC_id, UE_id = 0;
|
int CC_id, UE_id = 0;
|
||||||
gNB_MAC_INST *gNB = RC.nrmac[module_idP];
|
gNB_MAC_INST *gNB = RC.nrmac[module_idP];
|
||||||
NR_UE_list_t *UE_list = &gNB->UE_list;
|
NR_UE_list_t *UE_list = &gNB->UE_list;
|
||||||
NR_UE_sched_ctrl_t *ue_sched_ctl = &UE_list->UE_sched_ctrl[UE_id];
|
|
||||||
NR_COMMON_channels_t *cc = gNB->common_channels;
|
NR_COMMON_channels_t *cc = gNB->common_channels;
|
||||||
NR_sched_pucch *pucch_sched = (NR_sched_pucch*) malloc(sizeof(NR_sched_pucch));
|
NR_sched_pucch *pucch_sched = (NR_sched_pucch*) malloc(sizeof(NR_sched_pucch));
|
||||||
|
|
||||||
@@ -424,6 +423,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
|
|||||||
|
|
||||||
// TbD once RACH is available, start ta_timer when UE is connected
|
// TbD once RACH is available, start ta_timer when UE is connected
|
||||||
#if 0
|
#if 0
|
||||||
|
NR_UE_sched_ctrl_t *ue_sched_ctl = &UE_list->UE_sched_ctrl[UE_id];
|
||||||
if (ue_sched_ctl->ta_timer) ue_sched_ctl->ta_timer--;
|
if (ue_sched_ctl->ta_timer) ue_sched_ctl->ta_timer--;
|
||||||
|
|
||||||
if (ue_sched_ctl->ta_timer == 0) {
|
if (ue_sched_ctl->ta_timer == 0) {
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_
|
|||||||
ue_context_p->ue_id_rnti = ue_context_p->ue_context.secondaryCellGroup->spCellConfig->reconfigurationWithSync->newUE_Identity;
|
ue_context_p->ue_id_rnti = ue_context_p->ue_context.secondaryCellGroup->spCellConfig->reconfigurationWithSync->newUE_Identity;
|
||||||
NR_CG_Config_t *CG_Config = calloc(1,sizeof(*CG_Config));
|
NR_CG_Config_t *CG_Config = calloc(1,sizeof(*CG_Config));
|
||||||
memset((void*)CG_Config,0,sizeof(*CG_Config));
|
memset((void*)CG_Config,0,sizeof(*CG_Config));
|
||||||
int CG_Config_size = generate_CG_Config(rrc,CG_Config,ue_context_p->ue_context.reconfig,ue_context_p->ue_context.rb_config);
|
__attribute__((unused))int CG_Config_size = generate_CG_Config(rrc,CG_Config,ue_context_p->ue_context.reconfig,ue_context_p->ue_context.rb_config);
|
||||||
|
|
||||||
//X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).rrc_buffer_size = CG_Config_size; //Need to verify correct value for the buffer_size
|
//X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).rrc_buffer_size = CG_Config_size; //Need to verify correct value for the buffer_size
|
||||||
// Send to X2 entity to transport to MeNB
|
// Send to X2 entity to transport to MeNB
|
||||||
|
|||||||
Reference in New Issue
Block a user