Commit edbb75a2 authored by Raymond Knopp's avatar Raymond Knopp

Merge branch 'l1-sidelink' of https://gitlab.eurecom.fr/matzakos/LTE-D2D into l1-sidelink

Conflicts:
	openair1/SCHED/phy_procedures_lte_ue.c
	targets/RT/USER/lte-ue.c
parents 76a375a7 46ca2820
...@@ -149,7 +149,7 @@ int rx_psbch(PHY_VARS_UE *ue,int frame_rx,int subframe_rx) { ...@@ -149,7 +149,7 @@ int rx_psbch(PHY_VARS_UE *ue,int frame_rx,int subframe_rx) {
ru_tmp.N_TA_offset=0; ru_tmp.N_TA_offset=0;
ru_tmp.common.rxdata_7_5kHz = (int32_t**)malloc16(ue->frame_parms.nb_antennas_rx*sizeof(int32_t*)); ru_tmp.common.rxdata_7_5kHz = (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=0;aa<ue->frame_parms.nb_antennas_rx;aa++)
ru_tmp.common.rxdata_7_5kHz[aa] = ue->sl_rxdata_7_5kHz[aa];//(int32_t*)&ue->common_vars.rxdata_syncSL[aa][ue->rx_offsetSL*2]; ru_tmp.common.rxdata_7_5kHz[aa] = ue->sl_rxdata_7_5kHz[ue->current_thread_id[0]][aa];//(int32_t*)&ue->common_vars.rxdata_syncSL[aa][ue->rx_offsetSL*2];
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;
...@@ -169,6 +169,9 @@ int rx_psbch(PHY_VARS_UE *ue,int frame_rx,int subframe_rx) { ...@@ -169,6 +169,9 @@ int rx_psbch(PHY_VARS_UE *ue,int frame_rx,int subframe_rx) {
} }
LOG_D(PHY,"Running PBCH detection with Nid_SL %d (is_synchronizedSL %d) rxdata %p\n",ue->frame_parms.Nid_SL,ue->is_synchronizedSL,ue->common_vars.rxdata[0]); LOG_D(PHY,"Running PBCH detection with Nid_SL %d (is_synchronizedSL %d) rxdata %p\n",ue->frame_parms.Nid_SL,ue->is_synchronizedSL,ue->common_vars.rxdata[0]);
LOG_D(PHY,"slbch_decoding: FEP in %d.%d rx signal energy %d dB %d dB\n",frame_rx,subframe_rx,
dB_fixed(signal_energy(&ue->common_vars.rxdata[0][ue->frame_parms.samples_per_tti*subframe_rx],ue->frame_parms.samples_per_tti)),
dB_fixed(signal_energy(ue->sl_rxdata_7_5kHz[ue->current_thread_id[0]][0],ue->frame_parms.samples_per_tti)));
for (int l=0; l<11; l++) { for (int l=0; l<11; l++) {
slot_fep_ul(&ru_tmp,l%7,(l>6)?1:0,0); slot_fep_ul(&ru_tmp,l%7,(l>6)?1:0,0);
...@@ -367,7 +370,8 @@ int rx_psbch(PHY_VARS_UE *ue,int frame_rx,int subframe_rx) { ...@@ -367,7 +370,8 @@ int rx_psbch(PHY_VARS_UE *ue,int frame_rx,int subframe_rx) {
&ue->slss_rx, &ue->slss_rx,
&testframe, &testframe,
&testsubframe); &testsubframe);
AssertFatal(testframe!=frame_rx || testsubframe!=subframe_rx, if (ue->is_synchronizedSL!=0 || ue->is_synchronized!=0)
AssertFatal(testframe==frame_rx && testsubframe==subframe_rx,
"SFN.SF %d.%d != %d.%d\n",testframe,testsubframe,frame_rx,subframe_rx); "SFN.SF %d.%d != %d.%d\n",testframe,testsubframe,frame_rx,subframe_rx);
return(0); return(0);
} }
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
#include "PHY/defs.h" #include "PHY/defs.h"
#include "PHY/LTE_TRANSPORT/proto.h" #include "PHY/LTE_TRANSPORT/proto.h"
#define PSDCH_DEBUG 1 //#define PSDCH_DEBUG 1
void sldch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subframe_rx,int npsdch,int nprb,int rvidx) { void sldch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subframe_rx,int npsdch,int nprb,int rvidx) {
...@@ -50,7 +50,9 @@ void sldch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra ...@@ -50,7 +50,9 @@ void sldch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
int32_t avgU[2]; int32_t avgU[2];
LOG_I(PHY,"sldch_decoding %d.%d npsdch %d rvidx %d sl_fep_done %d\n",frame_rx,subframe_rx,npsdch,rvidx,proc->sl_fep_done); LOG_D(PHY,"sldch_decoding %d.%d npsdch %d rvidx %d sl_fep_done %d\n",frame_rx,subframe_rx,npsdch,rvidx,proc->sl_fep_done);
if (ue->sldch_received[npsdch] > 0) return;
// slot FEP // slot FEP
if (proc->sl_fep_done == 0) { if (proc->sl_fep_done == 0) {
...@@ -75,9 +77,10 @@ void sldch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra ...@@ -75,9 +77,10 @@ void sldch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
slot_fep_ul(&ru_tmp,l,(subframe_rx<<1)+1,0); slot_fep_ul(&ru_tmp,l,(subframe_rx<<1)+1,0);
} }
} }
LOG_I(PHY,"sldch_decoding: FEP in %d.%d for npsdch %d rvidx %d rx signal energy %d dB %d dB\n",frame_rx,subframe_rx,npsdch,rvidx, LOG_D(PHY,"sldch_decoding: FEP in %d.%d for npsdch %d rvidx %d rx signal energy %d (%p) dB %d dB\n",frame_rx,subframe_rx,npsdch,rvidx,
dB_fixed(signal_energy(&ue->common_vars.rxdata[0][ue->frame_parms.samples_per_tti*subframe_rx],ue->frame_parms.samples_per_tti)), dB_fixed(signal_energy(&ue->common_vars.rxdata[0][ue->frame_parms.samples_per_tti*subframe_rx],ue->frame_parms.samples_per_tti)),
dB_fixed(signal_energy(ue->sl_rxdata_7_5kHz[0],ue->frame_parms.samples_per_tti))); &ue->common_vars.rxdata[0][ue->frame_parms.samples_per_tti*subframe_rx],
dB_fixed(signal_energy(ue->sl_rxdata_7_5kHz[ue->current_thread_id[subframe_rx]][0],ue->frame_parms.samples_per_tti)));
for (int l=0; l<Nsymb; l++) { for (int l=0; l<Nsymb; l++) {
ulsch_extract_rbs_single((int32_t**)rxdataF, ulsch_extract_rbs_single((int32_t**)rxdataF,
...@@ -153,7 +156,7 @@ void sldch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra ...@@ -153,7 +156,7 @@ void sldch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
log2_maxh = (log2_approx(avgs)/2)+ log2_approx(ue->frame_parms.nb_antennas_rx-1)+4; log2_maxh = (log2_approx(avgs)/2)+ log2_approx(ue->frame_parms.nb_antennas_rx-1)+4;
LOG_I(PHY,"sldch_decoding %d.%d npsdch %d log2_maxh %d\n",frame_rx,subframe_rx,npsdch,log2_maxh); LOG_D(PHY,"sldch_decoding %d.%d npsdch %d log2_maxh %d\n",frame_rx,subframe_rx,npsdch,log2_maxh);
...@@ -284,9 +287,10 @@ void sldch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra ...@@ -284,9 +287,10 @@ void sldch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
LOG_I(PHY,"SLDCH received for npsdch %d (rvidx %d, iter %d)\n", LOG_I(PHY,"SLDCH received for npsdch %d (rvidx %d, iter %d)\n",
npsdch, npsdch,
rvidx,ret); rvidx,ret);
ue->sldch_received[npsdch] = 1;
} }
exit(-1); //exit(-1);
} }
void rx_sldch(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, int frame_rx,int subframe_rx) { void rx_sldch(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, int frame_rx,int subframe_rx) {
...@@ -303,7 +307,6 @@ void rx_sldch(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, int frame_rx,int subframe_rx ...@@ -303,7 +307,6 @@ void rx_sldch(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, int frame_rx,int subframe_rx
uint32_t absSF_offset,absSF_modP; uint32_t absSF_offset,absSF_modP;
int rvtab[4]={0,2,3,1}; int rvtab[4]={0,2,3,1};
return;
absSF_offset = absSF-O; absSF_offset = absSF-O;
if (absSF_offset < O) return; if (absSF_offset < O) return;
...@@ -316,6 +319,8 @@ void rx_sldch(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, int frame_rx,int subframe_rx ...@@ -316,6 +319,8 @@ void rx_sldch(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, int frame_rx,int subframe_rx
sldch->bitmap_length==42,"SLDCH Bitmap_length %x not supported\n", sldch->bitmap_length==42,"SLDCH Bitmap_length %x not supported\n",
sldch->bitmap_length); sldch->bitmap_length);
if (absSF_modP == 0) memset((void*)ue->sldch_received,0,sizeof(ue->sldch_received));
if (absSF_modP >= sldch->bitmap_length) return; if (absSF_modP >= sldch->bitmap_length) return;
uint64_t SFpos = ((uint64_t)1) << absSF_modP; uint64_t SFpos = ((uint64_t)1) << absSF_modP;
if ((SFpos & sldch->bitmap1) == 0) return; if ((SFpos & sldch->bitmap1) == 0) return;
...@@ -348,7 +353,7 @@ void rx_sldch(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, int frame_rx,int subframe_rx ...@@ -348,7 +353,7 @@ void rx_sldch(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, int frame_rx,int subframe_rx
int npsdch; int npsdch;
int nprb; int nprb;
LOG_I(PHY,"LPSDCH %d (%llx), N_TX_SLD %d, Ni %d, Nf %d\n",LPSDCH,sldch->bitmap1,N_TX_SLD,Ni,Nf); LOG_D(PHY,"LPSDCH %d (%llx), N_TX_SLD %d, Ni %d, Nf %d\n",LPSDCH,sldch->bitmap1,N_TX_SLD,Ni,Nf);
// loop over all candidate PRBs // loop over all candidate PRBs
for (int a_ji=0;a_ji<Nf;a_ji++){ for (int a_ji=0;a_ji<Nf;a_ji++){
jrx = absSF_modP%N_TX_SLD;//i/(Nf/N_TX_SLD); jrx = absSF_modP%N_TX_SLD;//i/(Nf/N_TX_SLD);
...@@ -358,10 +363,10 @@ void rx_sldch(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, int frame_rx,int subframe_rx ...@@ -358,10 +363,10 @@ void rx_sldch(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, int frame_rx,int subframe_rx
if (nprb<(sldch->N_SL_RB>>1)) nprb+=sldch->prb_Start; if (nprb<(sldch->N_SL_RB>>1)) nprb+=sldch->prb_Start;
else nprb+=(sldch->prb_End-(sldch->N_SL_RB>>1)); else nprb+=(sldch->prb_End-(sldch->N_SL_RB>>1));
// call decoding for candidate npsdch // call decoding for candidate npsdch
if (npsdch==0) { // if (npsdch==0) {
LOG_I(PHY,"SLDCH (RX): absSF_modP %d Trying npsdch %d, j %d rvidx %d (nprb %d)\n",absSF_modP,npsdch,jrx,rvtab[jrx],nprb); // LOG_I(PHY,"SLDCH (RX): absSF_modP %d Trying npsdch %d, j %d rvidx %d (nprb %d)\n",absSF_modP,npsdch,jrx,rvtab[jrx],nprb);
sldch_decoding(ue,proc,frame_rx,subframe_rx,npsdch,nprb,rvtab[jrx]); sldch_decoding(ue,proc,frame_rx,subframe_rx,npsdch,nprb,rvtab[jrx]);
} // }
} }
} }
...@@ -414,7 +419,7 @@ void sldch_codingmodulation(PHY_VARS_UE *ue,int frame_tx,int subframe_tx,int npr ...@@ -414,7 +419,7 @@ void sldch_codingmodulation(PHY_VARS_UE *ue,int frame_tx,int subframe_tx,int npr
LOG_I(PHY,"Generating SLDCH in %d.%d for rvidx %d, npsdch %d, first rb %d\n", LOG_D(PHY,"Generating SLDCH in %d.%d for rvidx %d, npsdch %d, first rb %d\n",
frame_tx,subframe_tx,rvidx,sldch->n_psdch,nprb); frame_tx,subframe_tx,rvidx,sldch->n_psdch,nprb);
dlsch->harq_processes[0]->nb_rb = 2; dlsch->harq_processes[0]->nb_rb = 2;
...@@ -574,7 +579,7 @@ void check_and_generate_psdch(PHY_VARS_UE *ue,int frame_tx,int subframe_tx) { ...@@ -574,7 +579,7 @@ void check_and_generate_psdch(PHY_VARS_UE *ue,int frame_tx,int subframe_tx) {
if (absSF_modP != ((b_1i*N_TX_SLD)+sldch->j)) return; if (absSF_modP != ((b_1i*N_TX_SLD)+sldch->j)) return;
nprb = 2*a_ji; nprb = 2*a_ji;
LOG_I(PHY,"Generating SLDCH in SFN.SF %d.%d (O %d, P %d, n_psdch %d, Nf %d, Ni %d, j %d, a_ji %d) \n",frame_tx,subframe_tx,O,P,sldch->n_psdch,Nf,Ni,sldch->j,a_ji); LOG_D(PHY,"Generating SLDCH in SFN.SF %d.%d (O %d, P %d, n_psdch %d, Nf %d, Ni %d, j %d, a_ji %d) \n",frame_tx,subframe_tx,O,P,sldch->n_psdch,Nf,Ni,sldch->j,a_ji);
} }
else { else {
......
...@@ -211,7 +211,8 @@ int _do_slpss_sss_extract(PHY_VARS_UE *ue, ...@@ -211,7 +211,8 @@ int _do_slpss_sss_extract(PHY_VARS_UE *ue,
pss1_symb = 2; pss1_symb = 2;
sss0_symb = 11; sss0_symb = 11;
sss1_symb = 12; sss1_symb = 12;
rxdataF = (int32_t**)ue->sl_rxdataF; rxdataF = (int32_t**)ue->sl_rxdataF[ue->current_thread_id[0]];
;
pss0_rxF = &rxdataF[aarx][(rx_offset + (pss0_symb*(frame_parms->ofdm_symbol_size)))]; pss0_rxF = &rxdataF[aarx][(rx_offset + (pss0_symb*(frame_parms->ofdm_symbol_size)))];
sss0_rxF = &rxdataF[aarx][(rx_offset + (sss0_symb*(frame_parms->ofdm_symbol_size)))]; sss0_rxF = &rxdataF[aarx][(rx_offset + (sss0_symb*(frame_parms->ofdm_symbol_size)))];
......
...@@ -404,7 +404,7 @@ void ulsch_modulation(int32_t **txdataF, ...@@ -404,7 +404,7 @@ void ulsch_modulation(int32_t **txdataF,
else { else {
harq_pid = 0; harq_pid = 0;
x2 = cinit; x2 = cinit;
LOG_I(PHY,"Setting seed for SL to %x\n",x2); LOG_D(PHY,"Setting seed for SL to %x\n",x2);
} }
if (!ulsch) { if (!ulsch) {
......
...@@ -1312,6 +1312,7 @@ typedef struct { ...@@ -1312,6 +1312,7 @@ typedef struct {
LTE_eNB_PUSCH *pusch_slcch; LTE_eNB_PUSCH *pusch_slcch;
LTE_UE_DLSCH_t *dlsch_rx_slsch; LTE_UE_DLSCH_t *dlsch_rx_slsch;
LTE_UE_DLSCH_t *dlsch_rx_sldch[MAX_SLDCH]; LTE_UE_DLSCH_t *dlsch_rx_sldch[MAX_SLDCH];
int sldch_received[MAX_SLDCH];
int16_t **sl_rxdataF[RX_NB_TH_MAX]; int16_t **sl_rxdataF[RX_NB_TH_MAX];
int16_t **sl_rxdata_7_5kHz[RX_NB_TH_MAX]; int16_t **sl_rxdata_7_5kHz[RX_NB_TH_MAX];
int16_t *slsch_dlsch_llr; int16_t *slsch_dlsch_llr;
......
...@@ -1267,9 +1267,8 @@ void ulsch_common_procedures(PHY_VARS_UE *ue, int frame_tx, int subframe_tx, uin ...@@ -1267,9 +1267,8 @@ void ulsch_common_procedures(PHY_VARS_UE *ue, int frame_tx, int subframe_tx, uin
} }
//#endif //#endif
// if ((frame_tx%100) == 0)
LOG_I(PHY,"[UE %d] Frame %d, subframe %d: ulsch_start = %d (rxoff %d, HW TA %d, timing advance %d, TA_offset %d, empty subframe %d\n", LOG_D(PHY,"[UE %d] Frame %d, subframe %d: ulsch_start = %d (rxoff %d, HW TA %d, timing advance %d, TA_offset %d, empty subframe %d\n",
ue->Mod_id,frame_tx,subframe_tx, ue->Mod_id,frame_tx,subframe_tx,
ulsch_start, ulsch_start,
ue->rx_offset, ue->rx_offset,
...@@ -1345,19 +1344,6 @@ void ulsch_common_procedures(PHY_VARS_UE *ue, int frame_tx, int subframe_tx, uin ...@@ -1345,19 +1344,6 @@ void ulsch_common_procedures(PHY_VARS_UE *ue, int frame_tx, int subframe_tx, uin
} }
#endif #endif
#endif #endif
LOG_I(PHY,"ULSCH : signal energy %d dB (txdata %p)\n",dB_fixed(signal_energy(&ue->common_vars.txdata[0][ulsch_start],frame_parms->samples_per_tti)),&ue->common_vars.txdata[0][ulsch_start]);
// write_output("txBuff.m","txSignal",&ue->common_vars.txdata[aa][ulsch_start],frame_parms->samples_per_tti,1,1);
// exit(-1);
/*
only for debug
LOG_I(PHY,"ul-signal [subframe: %d, ulsch_start %d, TA: %d, rxOffset: %d, timing_advance: %d, hw_timing_advance: %d]\n",subframe_tx, ulsch_start, ue->N_TA_offset, ue->rx_offset, ue->timing_advance, ue->hw_timing_advance);
if( (crash == 1) && (subframe_tx == 0) )
{
LOG_E(PHY,"***** DUMP TX Signal [ulsch_start %d] *****\n",ulsch_start);
write_output("txBuff.m","txSignal",&ue->common_vars.txdata[aa][ulsch_start],frame_parms->samples_per_tti,1,1);
}
*/
} //nb_antennas_tx } //nb_antennas_tx
#if UE_TIMING_TRACE #if UE_TIMING_TRACE
...@@ -4795,6 +4781,9 @@ void phy_procedures_UE_SL_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc) { ...@@ -4795,6 +4781,9 @@ void phy_procedures_UE_SL_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc) {
proc->sl_fep_done = 0; proc->sl_fep_done = 0;
if (ue->is_SynchRef == 0 && (frame_rx&3) == 0 && subframe_rx == 0) rx_psbch(ue,frame_rx,subframe_rx);
rx_sldch(ue,proc,frame_rx,subframe_rx); rx_sldch(ue,proc,frame_rx,subframe_rx);
if (ue->is_SynchRef == 0 && frame_rx==0 && subframe_rx==0) LOG_I(PHY,"Connected with SyncRef UE (slbch errors %d/%d)\n", if (ue->is_SynchRef == 0 && frame_rx==0 && subframe_rx==0) LOG_I(PHY,"Connected with SyncRef UE (slbch errors %d/%d)\n",
......
...@@ -1784,19 +1784,10 @@ void *UE_threadSL(void *arg) { ...@@ -1784,19 +1784,10 @@ void *UE_threadSL(void *arg) {
(void**)UE->common_vars.rxdata, (void**)UE->common_vars.rxdata,
UE->rx_offsetSL, UE->rx_offsetSL,
UE->frame_parms.nb_antennas_rx),""); UE->frame_parms.nb_antennas_rx),"");
/*
AssertFatal(UE->frame_parms.samples_per_tti*40 ==
UE->rfdevice.trx_read_func(&UE->rfdevice,
&timestamp,
(void**)UE->common_vars.rxdata_syncSL,
UE->frame_parms.samples_per_tti*40,
UE->frame_parms.nb_antennas_rx),"");
write_output("fourframes.m","frames4",UE->common_vars.rxdata_syncSL[0],UE->frame_parms.samples_per_tti*10,1,1);
exit(-1);*/
} }
UE->rx_offsetSL=0; UE->rx_offsetSL=0;
UE->time_sync_cell=0; UE->time_sync_cell=0;
for (int i=0;i<RX_NB_TH;i++) UE->proc.proc_rxtx[i].frame_rx=(UE->proc.proc_rxtx[i].frame_rx-1+(subframe_delay/10))&1023; // -1 because we increment frame_rx below in subframe=0 for (int i=0;i<RX_NB_TH;i++) UE->proc.proc_rxtx[i].frame_rx=(UE->proc.proc_rxtx[i].frame_rx+3+(subframe_delay/10))&1023; // +3 because we increment frame_rx below in subframe=0 and first pbch is received in +4 frames
} else { // This is steady-state mode } else { // This is steady-state mode
sub_frame++; sub_frame++;
sub_frame%=10; sub_frame%=10;
...@@ -1849,17 +1840,12 @@ void *UE_threadSL(void *arg) { ...@@ -1849,17 +1840,12 @@ void *UE_threadSL(void *arg) {
writeBlockSize=UE->frame_parms.samples_per_tti -UE->rx_offset_diff; writeBlockSize=UE->frame_parms.samples_per_tti -UE->rx_offset_diff;
} }
LOG_D(PHY,"reading rxp[0] %p (%p) : %d samples\n",
rxp[0],UE->common_vars.rxdata[0],
readBlockSize);
AssertFatal(readBlockSize == AssertFatal(readBlockSize ==
UE->rfdevice.trx_read_func(&UE->rfdevice, UE->rfdevice.trx_read_func(&UE->rfdevice,
&timestamp, &timestamp,
rxp, rxp,
readBlockSize, readBlockSize,
UE->frame_parms.nb_antennas_rx),""); UE->frame_parms.nb_antennas_rx),"");
LOG_I(PHY,"writing txp[0] %p (%p) length %d subframe %d (%d dB)\n",txp[0],UE->common_vars.txdata[0],
writeBlockSize,(sub_frame+2)%10,dB_fixed(signal_energy(txp[0],writeBlockSize)));
AssertFatal( writeBlockSize == AssertFatal( writeBlockSize ==
UE->rfdevice.trx_write_func(&UE->rfdevice, UE->rfdevice.trx_write_func(&UE->rfdevice,
......
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