Commit a7b53a25 authored by Raymond Knopp's avatar Raymond Knopp

handling of joint legacy UE and SL procedures, modifications to antenna mappings in USRP for SL

parent 09ff2087
...@@ -177,10 +177,13 @@ int rx_psbch(PHY_VARS_UE *ue,int frame_rx,int subframe_rx) { ...@@ -177,10 +177,13 @@ int rx_psbch(PHY_VARS_UE *ue,int frame_rx,int subframe_rx) {
ru_tmp.common.rxdataF = (int32_t**)rxdataF; ru_tmp.common.rxdataF = (int32_t**)rxdataF;
ru_tmp.nb_rx = ue->frame_parms.nb_antennas_rx; ru_tmp.nb_rx = ue->frame_parms.nb_antennas_rx;
int SLaoffset=0;
if (ue->SLonly==0) SLaoffset=1;
// if SLonly then all antennas are SL only, else they are inteleaved with legacy RX antennas
if (ue->is_synchronizedSL == 1) { // Run front-end processing if (ue->is_synchronizedSL == 1) { // Run front-end processing
ru_tmp.common.rxdata = (int32_t**)malloc16(ue->frame_parms.nb_antennas_rx*sizeof(int32_t*)); ru_tmp.common.rxdata = (int32_t**)malloc16(ue->frame_parms.nb_antennas_rx*sizeof(int32_t*));
for (int aa=0;aa<ue->frame_parms.nb_antennas_rx;aa++) { for (int aa=SLaoffset;aa<(ue->frame_parms.nb_antennas_rx<<SLaoffset);aa+=(1<<SLaoffset)) {
ru_tmp.common.rxdata[aa] = (int32_t*)&ue->common_vars.rxdata[aa][0]; ru_tmp.common.rxdata[aa] = (int32_t*)&ue->common_vars.rxdata[aa][0];
} }
......
...@@ -81,6 +81,9 @@ void sldch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra ...@@ -81,6 +81,9 @@ void sldch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
if (ue->sldch_received[npsdch] > 0) return; if (ue->sldch_received[npsdch] > 0) return;
int SLaoffset=0;
if (ue->SLonly==0) SLaoffset=1;
// slot FEP // slot FEP
if (proc->sl_fep_done == 0) { if (proc->sl_fep_done == 0) {
proc->sl_fep_done = 1; proc->sl_fep_done = 1;
...@@ -89,7 +92,12 @@ void sldch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra ...@@ -89,7 +92,12 @@ void sldch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
memcpy((void*)&ru_tmp.frame_parms,(void*)&ue->frame_parms,sizeof(LTE_DL_FRAME_PARMS)); memcpy((void*)&ru_tmp.frame_parms,(void*)&ue->frame_parms,sizeof(LTE_DL_FRAME_PARMS));
ru_tmp.N_TA_offset=0; ru_tmp.N_TA_offset=0;
ru_tmp.common.rxdata = ue->common_vars.rxdata; // ru_tmp.common.rxdata = ue->common_vars.rxdata;
ru_tmp.common.rxdata = (int32_t**)malloc16(ue->frame_parms.nb_antennas_rx*sizeof(int32_t*));
for (int aa=SLaoffset;aa<(ue->frame_parms.nb_antennas_rx<<SLaoffset);aa+=(1<<SLaoffset)) {
ru_tmp.common.rxdata[aa] = (int32_t*)&ue->common_vars.rxdata[aa][0];
}
ru_tmp.common.rxdata_7_5kHz = (int32_t**)rxdata_7_5kHz; ru_tmp.common.rxdata_7_5kHz = (int32_t**)rxdata_7_5kHz;
ru_tmp.common.rxdataF = (int32_t**)rxdataF; ru_tmp.common.rxdataF = (int32_t**)rxdataF;
ru_tmp.nb_rx = ue->frame_parms.nb_antennas_rx; ru_tmp.nb_rx = ue->frame_parms.nb_antennas_rx;
...@@ -97,6 +105,8 @@ void sldch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra ...@@ -97,6 +105,8 @@ void sldch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
remove_7_5_kHz(&ru_tmp,(subframe_rx<<1)); remove_7_5_kHz(&ru_tmp,(subframe_rx<<1));
remove_7_5_kHz(&ru_tmp,(subframe_rx<<1)+1); remove_7_5_kHz(&ru_tmp,(subframe_rx<<1)+1);
free(ru_tmp.common.rxdata);
// extract symbols from slot // extract symbols from slot
for (int l=0; l<Nsymb; l++) { for (int l=0; l<Nsymb; l++) {
slot_fep_ul(&ru_tmp,l,(subframe_rx<<1),0); slot_fep_ul(&ru_tmp,l,(subframe_rx<<1),0);
......
...@@ -874,25 +874,37 @@ void pscch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra ...@@ -874,25 +874,37 @@ void pscch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
if (frame_rx < 100) LOG_D(PHY,"%d.%d: Running pscch decoding slot %d, nprb %d, a %d, amod %d,N_SL_RB_SC %d\n",frame_rx,subframe_rx,slot,nprb,a,amod,slsch->N_SL_RB_SC); if (frame_rx < 100) LOG_D(PHY,"%d.%d: Running pscch decoding slot %d, nprb %d, a %d, amod %d,N_SL_RB_SC %d\n",frame_rx,subframe_rx,slot,nprb,a,amod,slsch->N_SL_RB_SC);
// slot FEP // slot FEP
int SLaoffset=0;
if (ue->SLonly==0) SLaoffset=1;
if (proc->sl_fep_done == 0) { if (proc->sl_fep_done == 0) {
RU_t ru_tmp; RU_t ru_tmp;
memset((void*)&ru_tmp,0,sizeof(RU_t)); memset((void*)&ru_tmp,0,sizeof(RU_t));
memcpy((void*)&ru_tmp.frame_parms,(void*)&ue->frame_parms,sizeof(LTE_DL_FRAME_PARMS)); memcpy((void*)&ru_tmp.frame_parms,(void*)&ue->frame_parms,sizeof(LTE_DL_FRAME_PARMS));
ru_tmp.N_TA_offset=0; ru_tmp.N_TA_offset=0;
ru_tmp.common.rxdata = ue->common_vars.rxdata; // ru_tmp.common.rxdata = ue->common_vars.rxdata;
for (int aa=SLaoffset;aa<(ue->frame_parms.nb_antennas_rx<<SLaoffset);aa+=(1<<SLaoffset)) {
ru_tmp.common.rxdata[aa] = (int32_t*)&ue->common_vars.rxdata[aa][0];
}
ru_tmp.common.rxdata_7_5kHz = (int32_t**)rxdata_7_5kHz; ru_tmp.common.rxdata_7_5kHz = (int32_t**)rxdata_7_5kHz;
ru_tmp.common.rxdataF = (int32_t**)rxdataF; ru_tmp.common.rxdataF = (int32_t**)rxdataF;
ru_tmp.nb_rx = ue->frame_parms.nb_antennas_rx; ru_tmp.nb_rx = ue->frame_parms.nb_antennas_rx;
remove_7_5_kHz(&ru_tmp,(subframe_rx<<1)+slot); remove_7_5_kHz(&ru_tmp,(subframe_rx<<1));
remove_7_5_kHz(&ru_tmp,(subframe_rx<<1)+1);
free(ru_tmp.common.rxdata);
#ifdef PSCCH_DEBUG #ifdef PSCCH_DEBUG
write_output("rxsig0_input.m","rxs0_in",&ue->common_vars.rxdata[0][((subframe_rx<<1)+slot)*ue->frame_parms.samples_per_tti>>1],ue->frame_parms.samples_per_tti>>1,1,1); write_output("rxsig0_input.m","rxs0_in",&ue->common_vars.rxdata[0][((subframe_rx<<1)+slot)*ue->frame_parms.samples_per_tti>>1],ue->frame_parms.samples_per_tti>>1,1,1);
write_output("rxsig0_7_5kHz.m","rxs0_7_5kHz",rxdata_7_5kHz[0],ue->frame_parms.samples_per_tti,1,1); write_output("rxsig0_7_5kHz.m","rxs0_7_5kHz",rxdata_7_5kHz[0],ue->frame_parms.samples_per_tti,1,1);
#endif #endif
for (int l=0; l<Nsymb; l++) slot_fep_ul(&ru_tmp,l,(subframe_rx<<1)+slot,0); for (int l=0; l<Nsymb; l++) {
slot_fep_ul(&ru_tmp,l,(subframe_rx<<1),0);
slot_fep_ul(&ru_tmp,l,(subframe_rx<<1)+1,0);
}
proc->sl_fep_done = 1; proc->sl_fep_done = 1;
} }
// extract symbols from slot // extract symbols from slot
...@@ -1240,6 +1252,9 @@ void slsch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra ...@@ -1240,6 +1252,9 @@ void slsch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
LOG_D(PHY,"slsch_decoding %d.%d => lmod10 %d\n",frame_rx,subframe_rx,ljmod10); LOG_D(PHY,"slsch_decoding %d.%d => lmod10 %d\n",frame_rx,subframe_rx,ljmod10);
int SLaoffset=0;
if (ue->SLonly==0) SLaoffset=1;
// slot FEP // slot FEP
if (proc->sl_fep_done == 0) { if (proc->sl_fep_done == 0) {
proc->sl_fep_done = 1; proc->sl_fep_done = 1;
...@@ -1248,7 +1263,11 @@ void slsch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra ...@@ -1248,7 +1263,11 @@ void slsch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
memcpy((void*)&ru_tmp.frame_parms,(void*)&ue->frame_parms,sizeof(LTE_DL_FRAME_PARMS)); memcpy((void*)&ru_tmp.frame_parms,(void*)&ue->frame_parms,sizeof(LTE_DL_FRAME_PARMS));
ru_tmp.N_TA_offset=0; ru_tmp.N_TA_offset=0;
ru_tmp.common.rxdata = ue->common_vars.rxdata; // ru_tmp.common.rxdata = ue->common_vars.rxdata;
ru_tmp.common.rxdata = (int32_t**)malloc16(ue->frame_parms.nb_antennas_rx*sizeof(int32_t*));
for (int aa=SLaoffset;aa<(ue->frame_parms.nb_antennas_rx<<SLaoffset);aa+=(1<<SLaoffset)) {
ru_tmp.common.rxdata[aa] = (int32_t*)&ue->common_vars.rxdata[aa][0];
}
ru_tmp.common.rxdata_7_5kHz = (int32_t**)rxdata_7_5kHz; ru_tmp.common.rxdata_7_5kHz = (int32_t**)rxdata_7_5kHz;
ru_tmp.common.rxdataF = (int32_t**)rxdataF; ru_tmp.common.rxdataF = (int32_t**)rxdataF;
ru_tmp.nb_rx = ue->frame_parms.nb_antennas_rx; ru_tmp.nb_rx = ue->frame_parms.nb_antennas_rx;
...@@ -1256,6 +1275,8 @@ void slsch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra ...@@ -1256,6 +1275,8 @@ void slsch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
remove_7_5_kHz(&ru_tmp,(subframe_rx<<1)); remove_7_5_kHz(&ru_tmp,(subframe_rx<<1));
remove_7_5_kHz(&ru_tmp,(subframe_rx<<1)+1); remove_7_5_kHz(&ru_tmp,(subframe_rx<<1)+1);
free(ru_tmp.common.rxdata);
for (int l=0; l<Nsymb; l++) { for (int l=0; l<Nsymb; l++) {
slot_fep_ul(&ru_tmp,l,(subframe_rx<<1),0); slot_fep_ul(&ru_tmp,l,(subframe_rx<<1),0);
if (l<Nsymb-1) // skip last symbol in second slot if (l<Nsymb-1) // skip last symbol in second slot
......
...@@ -746,8 +746,10 @@ int trx_usrp_set_freq(openair0_device *device, openair0_config_t *openair0_cfg, ...@@ -746,8 +746,10 @@ int trx_usrp_set_freq(openair0_device *device, openair0_config_t *openair0_cfg,
if (dont_block == 1) if (dont_block == 1)
pthread_create(&f_thread,NULL,freq_thread,(void *)device); pthread_create(&f_thread,NULL,freq_thread,(void *)device);
else { else {
s->usrp->set_tx_freq(device->openair0_cfg[0].tx_freq[0]); for (int i=0;i<device->openair0_cfg[0].tx_num_channels;i++)
s->usrp->set_rx_freq(device->openair0_cfg[0].rx_freq[0]); s->usrp->set_tx_freq(device->openair0_cfg[0].tx_freq[i],i);
for (int i=0;i<device->openair0_cfg[0].rx_num_channels;i++)
s->usrp->set_rx_freq(device->openair0_cfg[0].rx_freq[i],i);
} }
return(0); return(0);
...@@ -1123,9 +1125,12 @@ extern "C" { ...@@ -1123,9 +1125,12 @@ extern "C" {
// lock mboard clocks // lock mboard clocks
if (openair0_cfg[0].clock_source == internal && device_adds.size() == 1) if (openair0_cfg[0].clock_source == internal && device_adds.size() == 1)
s->usrp->set_clock_source("internal"); s->usrp->set_clock_source("internal");
else else // if we set to external or if we have more than 1 USRP
s->usrp->set_clock_source("external"); s->usrp->set_clock_source("external");
// if we have more than 1 USRP require PPS source
if (device_adds.size()>1) s->usrp->set_time_source("external");
if (device->type==USRP_X300_DEV) { if (device->type==USRP_X300_DEV) {
openair0_cfg[0].rx_gain_calib_table = calib_table_x310; openair0_cfg[0].rx_gain_calib_table = calib_table_x310;
#if defined(USRP_REC_PLAY) #if defined(USRP_REC_PLAY)
......
...@@ -528,6 +528,8 @@ static void *UE_thread_synch(void *arg) ...@@ -528,6 +528,8 @@ static void *UE_thread_synch(void *arg)
ind = 0; ind = 0;
found = 0; found = 0;
// this is number of RX antennas for legacy LTE operation (i.e. not sidelink)
int nb_rx = UE->sidelink_active == 1 ? openair0_cfg[UE->rf_map.card].rx_num_channels : openair0_cfg[UE->rf_map.card].rx_num_channels>>1;
if (UE->UE_scan == 0) { if (UE->UE_scan == 0) {
do { do {
...@@ -554,7 +556,7 @@ static void *UE_thread_synch(void *arg) ...@@ -554,7 +556,7 @@ static void *UE_thread_synch(void *arg)
LOG_I( PHY, "[SCHED][UE] Check absolute frequency DL %"PRIu32", UL %"PRIu32" (oai_exit %d, rx_num_channels %d)\n", UE->frame_parms.dl_CarrierFreq, UE->frame_parms.ul_CarrierFreq,oai_exit, openair0_cfg[0].rx_num_channels); LOG_I( PHY, "[SCHED][UE] Check absolute frequency DL %"PRIu32", UL %"PRIu32" (oai_exit %d, rx_num_channels %d)\n", UE->frame_parms.dl_CarrierFreq, UE->frame_parms.ul_CarrierFreq,oai_exit, openair0_cfg[0].rx_num_channels);
for (i=0;i<openair0_cfg[UE->rf_map.card].rx_num_channels;i++) { for (i=0;i<nb_rx;i++) {
openair0_cfg[UE->rf_map.card].rx_freq[UE->rf_map.chain+i] = UE->frame_parms.dl_CarrierFreq; openair0_cfg[UE->rf_map.card].rx_freq[UE->rf_map.chain+i] = UE->frame_parms.dl_CarrierFreq;
openair0_cfg[UE->rf_map.card].tx_freq[UE->rf_map.chain+i] = UE->frame_parms.ul_CarrierFreq; openair0_cfg[UE->rf_map.card].tx_freq[UE->rf_map.chain+i] = UE->frame_parms.ul_CarrierFreq;
openair0_cfg[UE->rf_map.card].autocal[UE->rf_map.chain+i] = 1; openair0_cfg[UE->rf_map.card].autocal[UE->rf_map.chain+i] = 1;
...@@ -569,7 +571,7 @@ static void *UE_thread_synch(void *arg) ...@@ -569,7 +571,7 @@ static void *UE_thread_synch(void *arg)
} else if (UE->UE_scan == 1) { } else if (UE->UE_scan == 1) {
current_band=0; current_band=0;
for (i=0; i<openair0_cfg[UE->rf_map.card].rx_num_channels; i++) { for (i=0; i<nb_rx; i++) {
downlink_frequency[UE->rf_map.card][UE->rf_map.chain+i] = bands_to_scan.band_info[CC_id].dl_min; downlink_frequency[UE->rf_map.card][UE->rf_map.chain+i] = bands_to_scan.band_info[CC_id].dl_min;
uplink_frequency_offset[UE->rf_map.card][UE->rf_map.chain+i] = uplink_frequency_offset[UE->rf_map.card][UE->rf_map.chain+i] =
bands_to_scan.band_info[CC_id].ul_min-bands_to_scan.band_info[CC_id].dl_min; bands_to_scan.band_info[CC_id].ul_min-bands_to_scan.band_info[CC_id].dl_min;
...@@ -612,7 +614,7 @@ static void *UE_thread_synch(void *arg) ...@@ -612,7 +614,7 @@ static void *UE_thread_synch(void *arg)
oai_exit=1; oai_exit=1;
} }
for (i=0; i<openair0_cfg[UE->rf_map.card].rx_num_channels; i++) { for (i=0; i<nb_rx; i++) {
downlink_frequency[UE->rf_map.card][UE->rf_map.chain+i] = bands_to_scan.band_info[current_band].dl_min+current_offset; downlink_frequency[UE->rf_map.card][UE->rf_map.chain+i] = bands_to_scan.band_info[current_band].dl_min+current_offset;
uplink_frequency_offset[UE->rf_map.card][UE->rf_map.chain+i] = bands_to_scan.band_info[current_band].ul_min-bands_to_scan.band_info[0].dl_min + current_offset; uplink_frequency_offset[UE->rf_map.card][UE->rf_map.chain+i] = bands_to_scan.band_info[current_band].ul_min-bands_to_scan.band_info[0].dl_min + current_offset;
...@@ -1094,7 +1096,7 @@ static void *UE_thread_rxn_txnp4(void *arg) { ...@@ -1094,7 +1096,7 @@ static void *UE_thread_rxn_txnp4(void *arg) {
LOG_E( PHY, "[UE %"PRIu8"] Frame %"PRIu32", subframe %u %s\n", LOG_E( PHY, "[UE %"PRIu8"] Frame %"PRIu32", subframe %u %s\n",
UE->Mod_id, proc->frame_rx, proc->subframe_tx,txt ); UE->Mod_id, proc->frame_rx, proc->subframe_tx,txt );
} }
} } // SLonly==1 && mac_enabled == 1
phy_procedures_UE_SL_TX(UE,proc); phy_procedures_UE_SL_TX(UE,proc);
} }
......
...@@ -552,9 +552,12 @@ void set_default_frame_parms(LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs]) { ...@@ -552,9 +552,12 @@ void set_default_frame_parms(LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs]) {
} }
} }
void init_openair0(LTE_DL_FRAME_PARMS *frame_parms,int rxgain) { void init_openair0(LTE_DL_FRAME_PARMS *frame_parms,int rxgain,int SLactive) {
int card; int card;
int i; int i;
AssertFatal(frame_parms!=NULL,"frame_parms is null\n");
AssertFatal(SLactive == 0 || SLactive == 1, "Illegal SLactive %d\n",SLactive);
for (card=0; card<MAX_CARDS; card++) { for (card=0; card<MAX_CARDS; card++) {
openair0_cfg[card].mmapped_dma=mmapped_dma; openair0_cfg[card].mmapped_dma=mmapped_dma;
...@@ -597,8 +600,8 @@ void init_openair0(LTE_DL_FRAME_PARMS *frame_parms,int rxgain) { ...@@ -597,8 +600,8 @@ void init_openair0(LTE_DL_FRAME_PARMS *frame_parms,int rxgain) {
openair0_cfg[card].Mod_id = 0; openair0_cfg[card].Mod_id = 0;
openair0_cfg[card].num_rb_dl=frame_parms->N_RB_DL; openair0_cfg[card].num_rb_dl=frame_parms->N_RB_DL;
openair0_cfg[card].clock_source = clock_source; openair0_cfg[card].clock_source = clock_source;
openair0_cfg[card].tx_num_channels=min(2,frame_parms->nb_antennas_tx); openair0_cfg[card].tx_num_channels=min(2,frame_parms->nb_antennas_tx)<<SLactive;
openair0_cfg[card].rx_num_channels=min(2,frame_parms->nb_antennas_rx); openair0_cfg[card].rx_num_channels=min(2,frame_parms->nb_antennas_rx)<<SLactive;
for (i=0; i<4; i++) { for (i=0; i<4; i++) {
if (i<openair0_cfg[card].tx_num_channels) if (i<openair0_cfg[card].tx_num_channels)
...@@ -606,11 +609,20 @@ void init_openair0(LTE_DL_FRAME_PARMS *frame_parms,int rxgain) { ...@@ -606,11 +609,20 @@ void init_openair0(LTE_DL_FRAME_PARMS *frame_parms,int rxgain) {
else else
openair0_cfg[card].tx_freq[i]=0.0; openair0_cfg[card].tx_freq[i]=0.0;
if (i<openair0_cfg[card].rx_num_channels) if (SLactive==0) {
openair0_cfg[card].rx_freq[i] = downlink_frequency[0][i]; if (i<openair0_cfg[card].rx_num_channels)
else openair0_cfg[card].rx_freq[i] = downlink_frequency[0][i];
else
openair0_cfg[card].rx_freq[i]=0.0; openair0_cfg[card].rx_freq[i]=0.0;
}
else { // assign DL and UL frequency alternately on antenna ports if SL is active
if (i<openair0_cfg[card].rx_num_channels) {
if ((i&2)==0) openair0_cfg[card].rx_freq[i] = downlink_frequency[0][i/2];
else openair0_cfg[card].rx_freq[i] = downlink_frequency[0][i/2]+uplink_frequency_offset[0][i];
}
else
openair0_cfg[card].rx_freq[i]=0.0;
}
openair0_cfg[card].autocal[i] = 1; openair0_cfg[card].autocal[i] = 1;
openair0_cfg[card].tx_gain[i] = tx_gain[0][i]; openair0_cfg[card].tx_gain[i] = tx_gain[0][i];
openair0_cfg[card].rx_gain[i] = rxgain - rx_gain_off; openair0_cfg[card].rx_gain[i] = rxgain - rx_gain_off;
...@@ -728,6 +740,7 @@ int main( int argc, char **argv ) { ...@@ -728,6 +740,7 @@ int main( int argc, char **argv ) {
if (SLonly == 1 || synchRef==1) sidelink_active=1; if (SLonly == 1 || synchRef==1) sidelink_active=1;
printf("Running with %d UE instances\n",NB_UE_INST); printf("Running with %d UE instances\n",NB_UE_INST);
if (NB_UE_INST > 1 && simL1flag != 1 && nfapi_mode != 3) { if (NB_UE_INST > 1 && simL1flag != 1 && nfapi_mode != 3) {
...@@ -830,7 +843,7 @@ int main( int argc, char **argv ) { ...@@ -830,7 +843,7 @@ int main( int argc, char **argv ) {
} }
} }
} }
else init_openair0(frame_parms[0],(int)rx_gain[0][0]); else init_openair0(frame_parms[0],(int)rx_gain[0][0],(PHY_vars_UE_g[0][0]->sidelink_active==1 && PHY_vars_UE_g[0][0]->SLonly==0)?1:0);
if (simL1flag==1) { if (simL1flag==1) {
RCConfig_sim(); RCConfig_sim();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment