Merge remote-tracking branch 'origin/develop' into NR_scheduling_CSIRS
This commit is contained in:
@@ -379,6 +379,13 @@ void phy_free_nr_gNB(PHY_VARS_gNB *gNB)
|
||||
|
||||
|
||||
}
|
||||
|
||||
//Adding nr_schedule_handler
|
||||
void install_nr_schedule_handlers(NR_IF_Module_t *if_inst)
|
||||
{
|
||||
if_inst->NR_PHY_config_req = nr_phy_config_request;
|
||||
if_inst->NR_Schedule_response = nr_schedule_response;
|
||||
}
|
||||
/*
|
||||
void install_schedule_handlers(IF_Module_t *if_inst)
|
||||
{
|
||||
@@ -457,7 +464,10 @@ void nr_phy_config_request(NR_PHY_Config_t *phy_config) {
|
||||
uint64_t ul_bw_khz = (12*gNB_config->carrier_config.ul_grid_size[gNB_config->ssb_config.scs_common.value].value)*(15<<gNB_config->ssb_config.scs_common.value);
|
||||
fp->ul_CarrierFreq = ((ul_bw_khz>>1) + gNB_config->carrier_config.uplink_frequency.value)*1000 ;
|
||||
|
||||
fp->nr_band = *RC.nrmac[Mod_id]->common_channels[0].ServingCellConfigCommon->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0];
|
||||
//fp->nr_band = *RC.nrmac[Mod_id]->common_channels[0].ServingCellConfigCommon->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0];
|
||||
lte_frame_type_t frame_type = 0; // FDD
|
||||
|
||||
get_band(fp->dl_CarrierFreq,&fp->nr_band,&dlul_offset,&frame_type); //RC.nrmac[Mod_id] cannot be accessed in NFAPI
|
||||
|
||||
get_delta_duplex(fp->nr_band, gNB_config->ssb_config.scs_common.value, &dlul_offset);
|
||||
dlul_offset *= 1000;
|
||||
@@ -497,6 +507,7 @@ void nr_phy_config_request(NR_PHY_Config_t *phy_config) {
|
||||
LOG_I(PHY,"gNB %d configured\n",Mod_id);
|
||||
}
|
||||
|
||||
|
||||
void init_nr_transport(PHY_VARS_gNB *gNB) {
|
||||
int i;
|
||||
int j;
|
||||
|
||||
@@ -325,10 +325,10 @@ void nr_ue_layer_mapping(NR_UE_ULSCH_t **ulsch_ue,
|
||||
|
||||
void nr_dft(int32_t *z, int32_t *d, uint32_t Msc_PUSCH)
|
||||
{
|
||||
#if defined(__x86_64__) || defined(__i386__)
|
||||
__m128i dft_in128[1][1200], dft_out128[1][1200];
|
||||
#if defined(__x86_64__) || +defined(__i386__)
|
||||
__m128i dft_in128[1][3240], dft_out128[1][3240];
|
||||
#elif defined(__arm__)
|
||||
int16x8_t dft_in128[1][1200], dft_out128[1][1200];
|
||||
int16x8_t dft_in128[1][3240], dft_out128[1][3240];
|
||||
#endif
|
||||
uint32_t *dft_in0 = (uint32_t*)dft_in128[0], *dft_out0 = (uint32_t*)dft_out128[0];
|
||||
|
||||
@@ -340,8 +340,10 @@ void nr_dft(int32_t *z, int32_t *d, uint32_t Msc_PUSCH)
|
||||
int16x8_t norm128;
|
||||
#endif
|
||||
|
||||
for (i = 0, ip = 0; i < Msc_PUSCH; i++, ip+=4) {
|
||||
dft_in0[ip] = d[i];
|
||||
if ((Msc_PUSCH % 1536) > 0) {
|
||||
for (i = 0, ip = 0; i < Msc_PUSCH; i++, ip+=4) {
|
||||
dft_in0[ip] = d[i];
|
||||
}
|
||||
}
|
||||
|
||||
switch (Msc_PUSCH) {
|
||||
@@ -480,7 +482,7 @@ void nr_dft(int32_t *z, int32_t *d, uint32_t Msc_PUSCH)
|
||||
break;
|
||||
|
||||
case 972:
|
||||
dft(DFT_960,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
dft(DFT_972,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
break;
|
||||
|
||||
case 1080:
|
||||
@@ -494,11 +496,98 @@ void nr_dft(int32_t *z, int32_t *d, uint32_t Msc_PUSCH)
|
||||
case 1200:
|
||||
dft(DFT_1200,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
break;
|
||||
|
||||
case 1296:
|
||||
dft(DFT_1296,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
break;
|
||||
|
||||
case 1440:
|
||||
dft(DFT_1440,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
break;
|
||||
|
||||
case 1500:
|
||||
dft(DFT_1500,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
break;
|
||||
|
||||
case 1536:
|
||||
//dft(DFT_1536,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
dft(DFT_1536,(int16_t*)d, (int16_t*)z, 1);
|
||||
break;
|
||||
|
||||
case 1620:
|
||||
dft(DFT_1620,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
break;
|
||||
|
||||
case 1728:
|
||||
dft(DFT_1728,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
break;
|
||||
|
||||
case 1800:
|
||||
dft(DFT_1800,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
break;
|
||||
|
||||
case 1920:
|
||||
dft(DFT_1920,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
break;
|
||||
|
||||
case 1944:
|
||||
dft(DFT_1944,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
break;
|
||||
|
||||
case 2160:
|
||||
dft(DFT_2160,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
break;
|
||||
|
||||
case 2304:
|
||||
dft(DFT_2304,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
break;
|
||||
|
||||
case 2400:
|
||||
dft(DFT_2400,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
break;
|
||||
|
||||
case 2592:
|
||||
dft(DFT_2592,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
break;
|
||||
|
||||
case 2700:
|
||||
dft(DFT_2700,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
break;
|
||||
|
||||
case 2880:
|
||||
dft(DFT_2880,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
break;
|
||||
|
||||
case 2916:
|
||||
dft(DFT_2916,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
break;
|
||||
|
||||
case 3000:
|
||||
dft(DFT_3000,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
break;
|
||||
|
||||
case 3072:
|
||||
//dft(DFT_3072,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
dft(DFT_3072,(int16_t*)d, (int16_t*)z, 1);
|
||||
break;
|
||||
|
||||
case 3240:
|
||||
dft(DFT_3240,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
|
||||
break;
|
||||
|
||||
default:
|
||||
// should not be reached
|
||||
LOG_E( PHY, "Unsupported Msc_PUSCH value of %"PRIu16"\n", Msc_PUSCH );
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
for (i = 0, ip = 0; i < Msc_PUSCH; i++, ip+=4) {
|
||||
z[i] = dft_out0[ip];
|
||||
|
||||
if ((Msc_PUSCH % 1536) > 0) {
|
||||
for (i = 0, ip = 0; i < Msc_PUSCH; i++, ip+=4)
|
||||
z[i] = dft_out0[ip];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -158,6 +158,8 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
|
||||
#endif
|
||||
for (aarx=0; aarx<gNB->frame_parms.nb_antennas_rx; aarx++) {
|
||||
|
||||
re_offset = k; /* Initializing the Resource element offset for each Rx antenna */
|
||||
|
||||
pil = (int16_t *)&pilot[0];
|
||||
rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+k+nushift)];
|
||||
ul_ch = (int16_t *)&ul_ch_estimates[aarx][ch_offset];
|
||||
|
||||
@@ -51,7 +51,7 @@ void init_byte2m64(void) {
|
||||
((int16_t*)&byte2m64_re[s])[0],((int16_t*)&byte2m64_im[s])[0],
|
||||
((int16_t*)&byte2m64_re[s])[1],((int16_t*)&byte2m64_im[s])[1],
|
||||
((int16_t*)&byte2m64_re[s])[2],((int16_t*)&byte2m64_im[s])[2],
|
||||
((int16_t*)&byte2m64_re[s])[3],((int16_t*)&byte2m64_im[s])[3]);
|
||||
((int16_t*)&byte2m64_re[s])[3],((int16_t*)&byte2m64_im[s])[3]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,10 +16,10 @@ void nr_idft(int32_t *z, uint32_t Msc_PUSCH)
|
||||
{
|
||||
|
||||
#if defined(__x86_64__) || defined(__i386__)
|
||||
__m128i idft_in128[1][1200], idft_out128[1][1200];
|
||||
__m128i idft_in128[1][3240], idft_out128[1][3240];
|
||||
__m128i norm128;
|
||||
#elif defined(__arm__)
|
||||
int16x8_t idft_in128[1][1200], idft_out128[1][1200];
|
||||
int16x8_t idft_in128[1][3240], idft_out128[1][3240];
|
||||
int16x8_t norm128;
|
||||
#endif
|
||||
int16_t *idft_in0 = (int16_t*)idft_in128[0], *idft_out0 = (int16_t*)idft_out128[0];
|
||||
@@ -28,20 +28,19 @@ void nr_idft(int32_t *z, uint32_t Msc_PUSCH)
|
||||
|
||||
LOG_T(PHY,"Doing lte_idft for Msc_PUSCH %d\n",Msc_PUSCH);
|
||||
|
||||
// conjugate input
|
||||
for (i = 0; i < (Msc_PUSCH>>2); i++) {
|
||||
if ((Msc_PUSCH % 1536) > 0) {
|
||||
// conjugate input
|
||||
for (i = 0; i < (Msc_PUSCH>>2); i++) {
|
||||
#if defined(__x86_64__)||defined(__i386__)
|
||||
*&(((__m128i*)z)[i]) = _mm_sign_epi16(*&(((__m128i*)z)[i]), *(__m128i*)&conjugate2[0]);
|
||||
*&(((__m128i*)z)[i]) = _mm_sign_epi16(*&(((__m128i*)z)[i]), *(__m128i*)&conjugate2[0]);
|
||||
#elif defined(__arm__)
|
||||
*&(((int16x8_t*)z)[i]) = vmulq_s16(*&(((int16x8_t*)z)[i]), *(int16x8_t*)&conjugate2[0]);
|
||||
*&(((int16x8_t*)z)[i]) = vmulq_s16(*&(((int16x8_t*)z)[i]), *(int16x8_t*)&conjugate2[0]);
|
||||
#endif
|
||||
}
|
||||
for (i = 0, ip = 0; i < Msc_PUSCH; i++, ip+=4)
|
||||
((uint32_t*)idft_in0)[ip+0] = z[i];
|
||||
}
|
||||
|
||||
for (i=0,ip=0; i<Msc_PUSCH; i++, ip+=4) {
|
||||
((int32_t*)idft_in0)[ip+0] = z[i];
|
||||
}
|
||||
|
||||
|
||||
switch (Msc_PUSCH) {
|
||||
case 12:
|
||||
dft(DFT_12,(int16_t *)idft_in0, (int16_t *)idft_out0,0);
|
||||
@@ -194,25 +193,102 @@ void nr_idft(int32_t *z, uint32_t Msc_PUSCH)
|
||||
dft(DFT_1200,idft_in0, idft_out0, 1);
|
||||
break;
|
||||
|
||||
case 1296:
|
||||
dft(DFT_1296,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
|
||||
break;
|
||||
|
||||
case 1440:
|
||||
dft(DFT_1440,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
|
||||
break;
|
||||
|
||||
case 1500:
|
||||
dft(DFT_1500,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
|
||||
break;
|
||||
|
||||
case 1536:
|
||||
//dft(DFT_1536,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
|
||||
idft(IDFT_1536,(int16_t*)z, (int16_t*)z, 1);
|
||||
break;
|
||||
|
||||
case 1620:
|
||||
dft(DFT_1620,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
|
||||
break;
|
||||
|
||||
case 1728:
|
||||
dft(DFT_1728,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
|
||||
break;
|
||||
|
||||
case 1800:
|
||||
dft(DFT_1800,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
|
||||
break;
|
||||
|
||||
case 1920:
|
||||
dft(DFT_1920,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
|
||||
break;
|
||||
|
||||
case 1944:
|
||||
dft(DFT_1944,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
|
||||
break;
|
||||
|
||||
case 2160:
|
||||
dft(DFT_2160,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
|
||||
break;
|
||||
|
||||
case 2304:
|
||||
dft(DFT_2304,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
|
||||
break;
|
||||
|
||||
case 2400:
|
||||
dft(DFT_2400,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
|
||||
break;
|
||||
|
||||
case 2592:
|
||||
dft(DFT_2592,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
|
||||
break;
|
||||
|
||||
case 2700:
|
||||
dft(DFT_2700,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
|
||||
break;
|
||||
|
||||
case 2880:
|
||||
dft(DFT_2880,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
|
||||
break;
|
||||
|
||||
case 2916:
|
||||
dft(DFT_2916,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
|
||||
break;
|
||||
|
||||
case 3000:
|
||||
dft(DFT_3000,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
|
||||
break;
|
||||
|
||||
case 3072:
|
||||
//dft(DFT_3072,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
|
||||
idft(IDFT_3072,(int16_t*)z, (int16_t*)z, 1);
|
||||
break;
|
||||
|
||||
case 3240:
|
||||
dft(DFT_3240,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
|
||||
break;
|
||||
|
||||
default:
|
||||
// should not be reached
|
||||
LOG_E( PHY, "Unsupported Msc_PUSCH value of %"PRIu16"\n", Msc_PUSCH );
|
||||
return;
|
||||
}
|
||||
|
||||
if ((Msc_PUSCH % 1536) > 0) {
|
||||
for (i = 0, ip = 0; i < Msc_PUSCH; i++, ip+=4)
|
||||
z[i] = ((uint32_t*)idft_out0)[ip];
|
||||
|
||||
|
||||
for (i = 0, ip = 0; i < Msc_PUSCH; i++, ip+=4) {
|
||||
z[i] = ((int32_t*)idft_out0)[ip];
|
||||
}
|
||||
|
||||
// conjugate output
|
||||
for (i = 0; i < (Msc_PUSCH>>2); i++) {
|
||||
// conjugate output
|
||||
for (i = 0; i < (Msc_PUSCH>>2); i++) {
|
||||
#if defined(__x86_64__) || defined(__i386__)
|
||||
((__m128i*)z)[i] = _mm_sign_epi16(((__m128i*)z)[i], *(__m128i*)&conjugate2[0]);
|
||||
((__m128i*)z)[i] = _mm_sign_epi16(((__m128i*)z)[i], *(__m128i*)&conjugate2[0]);
|
||||
#elif defined(__arm__)
|
||||
*&(((int16x8_t*)z)[i]) = vmulq_s16(*&(((int16x8_t*)z)[i]), *(int16x8_t*)&conjugate2[0]);
|
||||
*&(((int16x8_t*)z)[i]) = vmulq_s16(*&(((int16x8_t*)z)[i]), *(int16x8_t*)&conjugate2[0]);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(__x86_64__) || defined(__i386__)
|
||||
@@ -222,6 +298,7 @@ void nr_idft(int32_t *z, uint32_t Msc_PUSCH)
|
||||
|
||||
}
|
||||
|
||||
|
||||
void nr_ulsch_extract_rbs_single(int32_t **rxdataF,
|
||||
NR_gNB_PUSCH *pusch_vars,
|
||||
unsigned char symbol,
|
||||
|
||||
@@ -225,6 +225,8 @@ static void oai_xygraph(OAIgraph_t *graph, float *x, float *y, int len, int laye
|
||||
}
|
||||
|
||||
static void genericWaterFall (OAIgraph_t *graph, scopeSample_t *values, const int datasize, const int divisions, const char *label) {
|
||||
if ( values == NULL )
|
||||
return;
|
||||
fl_winset(FL_ObjWin(graph->graph));
|
||||
const int samplesPerPixel=datasize/graph->w;
|
||||
int displayPart=graph->waterFallh-ScaleZone;
|
||||
|
||||
@@ -5952,8 +5952,6 @@ void idft32768(int16_t *x,int16_t *y,unsigned char scale)
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
int16_t twa1536[1024],twb1536[1024];
|
||||
|
||||
// 512 x 3
|
||||
@@ -9471,6 +9469,919 @@ void dft1200(int16_t *x,int16_t *y,unsigned char scale_flag)
|
||||
|
||||
}
|
||||
|
||||
|
||||
static int16_t twa1296[431*2*4];
|
||||
static int16_t twb1296[431*2*4];
|
||||
|
||||
void dft1296(int16_t *x,int16_t *y,unsigned char scale_flag) //432 * 3
|
||||
{
|
||||
|
||||
int i,j;
|
||||
simd_q15_t *x128=(simd_q15_t *)x;
|
||||
simd_q15_t *y128=(simd_q15_t *)y;
|
||||
simd_q15_t *twa128=(simd_q15_t *)&twa1296[0];
|
||||
simd_q15_t *twb128=(simd_q15_t *)&twb1296[0];
|
||||
simd_q15_t x2128[1296];// = (simd_q15_t *)&x2128array[0];
|
||||
simd_q15_t ytmp128[1296];//=&ytmp128array3[0];
|
||||
|
||||
|
||||
|
||||
for (i=0,j=0; i<432; i++,j+=3) {
|
||||
x2128[i] = x128[j];
|
||||
x2128[i+432] = x128[j+1];
|
||||
x2128[i+864] = x128[j+2];
|
||||
}
|
||||
|
||||
dft432((int16_t *)x2128,(int16_t *)ytmp128,1);
|
||||
dft432((int16_t *)(x2128+432),(int16_t *)(ytmp128+432),1);
|
||||
dft432((int16_t *)(x2128+864),(int16_t *)(ytmp128+864),1);
|
||||
|
||||
bfly3_tw1(ytmp128,ytmp128+432,ytmp128+864,y128,y128+432,y128+864);
|
||||
|
||||
for (i=1,j=0; i<432; i++,j++) {
|
||||
bfly3(ytmp128+i,
|
||||
ytmp128+432+i,
|
||||
ytmp128+864+i,
|
||||
y128+i,
|
||||
y128+432+i,
|
||||
y128+864+i,
|
||||
twa128+j,
|
||||
twb128+j);
|
||||
}
|
||||
|
||||
if (scale_flag==1) {
|
||||
norm128 = set1_int16(dft_norm_table[14]);
|
||||
|
||||
for (i=0; i<1296; i++) {
|
||||
y128[i] = mulhi_int16(y128[i],norm128);
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
|
||||
};
|
||||
|
||||
|
||||
static int16_t twa1440[479*2*4];
|
||||
static int16_t twb1440[479*2*4];
|
||||
|
||||
void dft1440(int16_t *x,int16_t *y,unsigned char scale_flag) // 480 x 3
|
||||
{
|
||||
int i,j;
|
||||
simd_q15_t *x128=(simd_q15_t *)x;
|
||||
simd_q15_t *y128=(simd_q15_t *)y;
|
||||
simd_q15_t *twa128=(simd_q15_t *)&twa1440[0];
|
||||
simd_q15_t *twb128=(simd_q15_t *)&twb1440[0];
|
||||
simd_q15_t x2128[1440];// = (simd_q15_t *)&x2128array[0];
|
||||
simd_q15_t ytmp128[1440];//=&ytmp128array3[0];
|
||||
|
||||
|
||||
|
||||
for (i=0,j=0; i<480; i++,j+=3) {
|
||||
x2128[i] = x128[j];
|
||||
x2128[i+480] = x128[j+1];
|
||||
x2128[i+960] = x128[j+2];
|
||||
}
|
||||
|
||||
dft480((int16_t *)x2128,(int16_t *)ytmp128,1);
|
||||
dft480((int16_t *)(x2128+480),(int16_t *)(ytmp128+480),1);
|
||||
dft480((int16_t *)(x2128+960),(int16_t *)(ytmp128+960),1);
|
||||
|
||||
bfly3_tw1(ytmp128,ytmp128+480,ytmp128+960,y128,y128+480,y128+960);
|
||||
|
||||
for (i=1,j=0; i<480; i++,j++) {
|
||||
bfly3(ytmp128+i,
|
||||
ytmp128+480+i,
|
||||
ytmp128+960+i,
|
||||
y128+i,
|
||||
y128+480+i,
|
||||
y128+960+i,
|
||||
twa128+j,
|
||||
twb128+j);
|
||||
}
|
||||
|
||||
if (scale_flag==1) {
|
||||
norm128 = set1_int16(dft_norm_table[14]);
|
||||
|
||||
for (i=0; i<1440; i++) {
|
||||
y128[i] = mulhi_int16(y128[i],norm128);
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
|
||||
};
|
||||
|
||||
static int16_t twa1500[2392]__attribute__((aligned(32)));
|
||||
static int16_t twb1500[2392]__attribute__((aligned(32)));
|
||||
static int16_t twc1500[2392]__attribute__((aligned(32)));
|
||||
static int16_t twd1500[2392]__attribute__((aligned(32)));
|
||||
|
||||
void dft1500(int16_t *x,int16_t *y,unsigned char scale_flag)
|
||||
{
|
||||
|
||||
int i,j;
|
||||
simd_q15_t *x128=(simd_q15_t *)x;
|
||||
simd_q15_t *y128=(simd_q15_t *)y;
|
||||
simd_q15_t *twa128=(simd_q15_t *)&twa1500[0];
|
||||
simd_q15_t *twb128=(simd_q15_t *)&twb1500[0];
|
||||
simd_q15_t *twc128=(simd_q15_t *)&twc1500[0];
|
||||
simd_q15_t *twd128=(simd_q15_t *)&twd1500[0];
|
||||
simd_q15_t x2128[1500];// = (simd_q15_t *)&x2128array[0];
|
||||
simd_q15_t ytmp128[1500];//=&ytmp128array2[0];
|
||||
|
||||
|
||||
|
||||
for (i=0,j=0; i<300; i++,j+=5) {
|
||||
x2128[i] = x128[j];
|
||||
x2128[i+300] = x128[j+1];
|
||||
x2128[i+600] = x128[j+2];
|
||||
x2128[i+900] = x128[j+3];
|
||||
x2128[i+1200] = x128[j+4];
|
||||
}
|
||||
|
||||
dft300((int16_t *)x2128,(int16_t *)ytmp128,1);
|
||||
dft300((int16_t *)(x2128+300),(int16_t *)(ytmp128+300),1);
|
||||
dft300((int16_t *)(x2128+600),(int16_t *)(ytmp128+600),1);
|
||||
dft300((int16_t *)(x2128+900),(int16_t *)(ytmp128+900),1);
|
||||
dft300((int16_t *)(x2128+1200),(int16_t *)(ytmp128+1200),1);
|
||||
|
||||
bfly5_tw1(ytmp128,ytmp128+300,ytmp128+600,ytmp128+900,ytmp128+1200,y128,y128+300,y128+600,y128+900,y128+1200);
|
||||
|
||||
for (i=1,j=0; i<300; i++,j++) {
|
||||
bfly5(ytmp128+i,
|
||||
ytmp128+300+i,
|
||||
ytmp128+600+i,
|
||||
ytmp128+900+i,
|
||||
ytmp128+1200+i,
|
||||
y128+i,
|
||||
y128+300+i,
|
||||
y128+600+i,
|
||||
y128+900+i,
|
||||
y128+1200+i,
|
||||
twa128+j,
|
||||
twb128+j,
|
||||
twc128+j,
|
||||
twd128+j);
|
||||
}
|
||||
|
||||
if (scale_flag==1) {
|
||||
norm128 = set1_int16(dft_norm_table[15]);
|
||||
|
||||
for (i=0; i<1500; i++) {
|
||||
y128[i] = mulhi_int16(y128[i],norm128);
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
|
||||
}
|
||||
|
||||
static int16_t twa1620[539*2*4];
|
||||
static int16_t twb1620[539*2*4];
|
||||
|
||||
void dft1620(int16_t *x,int16_t *y,unsigned char scale_flag) // 540 x 3
|
||||
{
|
||||
int i,j;
|
||||
simd_q15_t *x128=(simd_q15_t *)x;
|
||||
simd_q15_t *y128=(simd_q15_t *)y;
|
||||
simd_q15_t *twa128=(simd_q15_t *)&twa1620[0];
|
||||
simd_q15_t *twb128=(simd_q15_t *)&twb1620[0];
|
||||
simd_q15_t x2128[1620];// = (simd_q15_t *)&x2128array[0];
|
||||
simd_q15_t ytmp128[1620];//=&ytmp128array3[0];
|
||||
|
||||
|
||||
|
||||
for (i=0,j=0; i<540; i++,j+=3) {
|
||||
x2128[i] = x128[j];
|
||||
x2128[i+540] = x128[j+1];
|
||||
x2128[i+1080] = x128[j+2];
|
||||
}
|
||||
|
||||
dft540((int16_t *)x2128,(int16_t *)ytmp128,1);
|
||||
dft540((int16_t *)(x2128+540),(int16_t *)(ytmp128+540),1);
|
||||
dft540((int16_t *)(x2128+1080),(int16_t *)(ytmp128+1080),1);
|
||||
|
||||
bfly3_tw1(ytmp128,ytmp128+540,ytmp128+1080,y128,y128+540,y128+1080);
|
||||
|
||||
for (i=1,j=0; i<540; i++,j++) {
|
||||
bfly3(ytmp128+i,
|
||||
ytmp128+540+i,
|
||||
ytmp128+1080+i,
|
||||
y128+i,
|
||||
y128+540+i,
|
||||
y128+1080+i,
|
||||
twa128+j,
|
||||
twb128+j);
|
||||
}
|
||||
|
||||
if (scale_flag==1) {
|
||||
norm128 = set1_int16(dft_norm_table[14]);
|
||||
|
||||
for (i=0; i<1620; i++) {
|
||||
y128[i] = mulhi_int16(y128[i],norm128);
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
|
||||
};
|
||||
|
||||
static int16_t twa1728[575*2*4];
|
||||
static int16_t twb1728[575*2*4];
|
||||
|
||||
void dft1728(int16_t *x,int16_t *y,unsigned char scale_flag) // 576 x 3
|
||||
{
|
||||
int i,j;
|
||||
simd_q15_t *x128=(simd_q15_t *)x;
|
||||
simd_q15_t *y128=(simd_q15_t *)y;
|
||||
simd_q15_t *twa128=(simd_q15_t *)&twa1728[0];
|
||||
simd_q15_t *twb128=(simd_q15_t *)&twb1728[0];
|
||||
simd_q15_t x2128[1728];// = (simd_q15_t *)&x2128array[0];
|
||||
simd_q15_t ytmp128[1728];//=&ytmp128array3[0];
|
||||
|
||||
|
||||
|
||||
for (i=0,j=0; i<576; i++,j+=3) {
|
||||
x2128[i] = x128[j];
|
||||
x2128[i+576] = x128[j+1];
|
||||
x2128[i+1152] = x128[j+2];
|
||||
}
|
||||
|
||||
dft576((int16_t *)x2128,(int16_t *)ytmp128,1);
|
||||
dft576((int16_t *)(x2128+576),(int16_t *)(ytmp128+576),1);
|
||||
dft576((int16_t *)(x2128+1152),(int16_t *)(ytmp128+1152),1);
|
||||
|
||||
bfly3_tw1(ytmp128,ytmp128+576,ytmp128+1152,y128,y128+576,y128+1152);
|
||||
|
||||
for (i=1,j=0; i<576; i++,j++) {
|
||||
bfly3(ytmp128+i,
|
||||
ytmp128+576+i,
|
||||
ytmp128+1152+i,
|
||||
y128+i,
|
||||
y128+576+i,
|
||||
y128+1152+i,
|
||||
twa128+j,
|
||||
twb128+j);
|
||||
}
|
||||
|
||||
if (scale_flag==1) {
|
||||
norm128 = set1_int16(dft_norm_table[14]);
|
||||
|
||||
for (i=0; i<1728; i++) {
|
||||
y128[i] = mulhi_int16(y128[i],norm128);
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
|
||||
};
|
||||
|
||||
static int16_t twa1800[599*2*4];
|
||||
static int16_t twb1800[599*2*4];
|
||||
|
||||
void dft1800(int16_t *x,int16_t *y,unsigned char scale_flag) // 600 x 3
|
||||
{
|
||||
int i,j;
|
||||
simd_q15_t *x128=(simd_q15_t *)x;
|
||||
simd_q15_t *y128=(simd_q15_t *)y;
|
||||
simd_q15_t *twa128=(simd_q15_t *)&twa1800[0];
|
||||
simd_q15_t *twb128=(simd_q15_t *)&twb1800[0];
|
||||
simd_q15_t x2128[1800];// = (simd_q15_t *)&x2128array[0];
|
||||
simd_q15_t ytmp128[1800];//=&ytmp128array3[0];
|
||||
|
||||
|
||||
|
||||
for (i=0,j=0; i<600; i++,j+=3) {
|
||||
x2128[i] = x128[j];
|
||||
x2128[i+600] = x128[j+1];
|
||||
x2128[i+1200] = x128[j+2];
|
||||
}
|
||||
|
||||
dft600((int16_t *)x2128,(int16_t *)ytmp128,1);
|
||||
dft600((int16_t *)(x2128+600),(int16_t *)(ytmp128+600),1);
|
||||
dft600((int16_t *)(x2128+1200),(int16_t *)(ytmp128+1200),1);
|
||||
|
||||
bfly3_tw1(ytmp128,ytmp128+600,ytmp128+1200,y128,y128+600,y128+1200);
|
||||
|
||||
for (i=1,j=0; i<600; i++,j++) {
|
||||
bfly3(ytmp128+i,
|
||||
ytmp128+600+i,
|
||||
ytmp128+1200+i,
|
||||
y128+i,
|
||||
y128+600+i,
|
||||
y128+1200+i,
|
||||
twa128+j,
|
||||
twb128+j);
|
||||
}
|
||||
|
||||
if (scale_flag==1) {
|
||||
norm128 = set1_int16(dft_norm_table[14]);
|
||||
|
||||
for (i=0; i<1800; i++) {
|
||||
y128[i] = mulhi_int16(y128[i],norm128);
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
|
||||
};
|
||||
|
||||
static int16_t twa1920[479*2*4];
|
||||
static int16_t twb1920[479*2*4];
|
||||
static int16_t twc1920[479*2*4];
|
||||
|
||||
void dft1920(int16_t *x,int16_t *y,unsigned char scale_flag) // 480 x 4
|
||||
{
|
||||
int i,j;
|
||||
simd_q15_t *x128=(simd_q15_t *)x;
|
||||
simd_q15_t *y128=(simd_q15_t *)y;
|
||||
simd_q15_t *twa128=(simd_q15_t *)&twa1920[0];
|
||||
simd_q15_t *twb128=(simd_q15_t *)&twb1920[0];
|
||||
simd_q15_t *twc128=(simd_q15_t *)&twc1920[0];
|
||||
simd_q15_t x2128[1920];// = (simd_q15_t *)&x2128array[0];
|
||||
simd_q15_t ytmp128[1920];//=&ytmp128array2[0];
|
||||
|
||||
|
||||
|
||||
for (i=0,j=0; i<480; i++,j+=4) {
|
||||
x2128[i] = x128[j];
|
||||
x2128[i+480] = x128[j+1];
|
||||
x2128[i+960] = x128[j+2];
|
||||
x2128[i+1440] = x128[j+3];
|
||||
}
|
||||
|
||||
dft480((int16_t *)x2128,(int16_t *)ytmp128,1);
|
||||
dft480((int16_t *)(x2128+480),(int16_t *)(ytmp128+480),1);
|
||||
dft480((int16_t *)(x2128+960),(int16_t *)(ytmp128+960),1);
|
||||
dft480((int16_t *)(x2128+1440),(int16_t *)(ytmp128+1440),1);
|
||||
|
||||
bfly4_tw1(ytmp128,ytmp128+480,ytmp128+960,ytmp128+1440,y128,y128+480,y128+960,y128+1440);
|
||||
|
||||
for (i=1,j=0; i<480; i++,j++) {
|
||||
bfly4(ytmp128+i,
|
||||
ytmp128+480+i,
|
||||
ytmp128+960+i,
|
||||
ytmp128+1440+i,
|
||||
y128+i,
|
||||
y128+480+i,
|
||||
y128+960+i,
|
||||
y128+1440+i,
|
||||
twa128+j,
|
||||
twb128+j,
|
||||
twc128+j);
|
||||
}
|
||||
|
||||
if (scale_flag==1) {
|
||||
norm128 = set1_int16(dft_norm_table[13]);
|
||||
for (i=0; i<1920; i++) {
|
||||
y128[i] = mulhi_int16(y128[i],norm128);
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
|
||||
};
|
||||
|
||||
static int16_t twa1944[647*2*4];
|
||||
static int16_t twb1944[647*2*4];
|
||||
|
||||
void dft1944(int16_t *x,int16_t *y,unsigned char scale_flag) // 648 x 3
|
||||
{
|
||||
int i,j;
|
||||
simd_q15_t *x128=(simd_q15_t *)x;
|
||||
simd_q15_t *y128=(simd_q15_t *)y;
|
||||
simd_q15_t *twa128=(simd_q15_t *)&twa1944[0];
|
||||
simd_q15_t *twb128=(simd_q15_t *)&twb1944[0];
|
||||
simd_q15_t x2128[1944];// = (simd_q15_t *)&x2128array[0];
|
||||
simd_q15_t ytmp128[1944];//=&ytmp128array3[0];
|
||||
|
||||
|
||||
|
||||
for (i=0,j=0; i<648; i++,j+=3) {
|
||||
x2128[i] = x128[j];
|
||||
x2128[i+648] = x128[j+1];
|
||||
x2128[i+1296] = x128[j+2];
|
||||
}
|
||||
|
||||
dft648((int16_t *)x2128,(int16_t *)ytmp128,1);
|
||||
dft648((int16_t *)(x2128+648),(int16_t *)(ytmp128+648),1);
|
||||
dft648((int16_t *)(x2128+1296),(int16_t *)(ytmp128+1296),1);
|
||||
|
||||
bfly3_tw1(ytmp128,ytmp128+648,ytmp128+1296,y128,y128+648,y128+1296);
|
||||
|
||||
for (i=1,j=0; i<648; i++,j++) {
|
||||
bfly3(ytmp128+i,
|
||||
ytmp128+648+i,
|
||||
ytmp128+1296+i,
|
||||
y128+i,
|
||||
y128+648+i,
|
||||
y128+1296+i,
|
||||
twa128+j,
|
||||
twb128+j);
|
||||
}
|
||||
|
||||
if (scale_flag==1) {
|
||||
norm128 = set1_int16(dft_norm_table[14]);
|
||||
|
||||
for (i=0; i<1944; i++) {
|
||||
y128[i] = mulhi_int16(y128[i],norm128);
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
|
||||
};
|
||||
|
||||
static int16_t twa2160[719*2*4];
|
||||
static int16_t twb2160[719*2*4];
|
||||
|
||||
void dft2160(int16_t *x,int16_t *y,unsigned char scale_flag) // 720 x 3
|
||||
{
|
||||
int i,j;
|
||||
simd_q15_t *x128=(simd_q15_t *)x;
|
||||
simd_q15_t *y128=(simd_q15_t *)y;
|
||||
simd_q15_t *twa128=(simd_q15_t *)&twa2160[0];
|
||||
simd_q15_t *twb128=(simd_q15_t *)&twb2160[0];
|
||||
simd_q15_t x2128[2160];// = (simd_q15_t *)&x2128array[0];
|
||||
simd_q15_t ytmp128[2160];//=&ytmp128array3[0];
|
||||
|
||||
|
||||
|
||||
for (i=0,j=0; i<720; i++,j+=3) {
|
||||
x2128[i] = x128[j];
|
||||
x2128[i+720] = x128[j+1];
|
||||
x2128[i+1440] = x128[j+2];
|
||||
}
|
||||
|
||||
dft720((int16_t *)x2128,(int16_t *)ytmp128,1);
|
||||
dft720((int16_t *)(x2128+720),(int16_t *)(ytmp128+720),1);
|
||||
dft720((int16_t *)(x2128+1440),(int16_t *)(ytmp128+1440),1);
|
||||
|
||||
bfly3_tw1(ytmp128,ytmp128+720,ytmp128+1440,y128,y128+720,y128+1440);
|
||||
|
||||
for (i=1,j=0; i<720; i++,j++) {
|
||||
bfly3(ytmp128+i,
|
||||
ytmp128+720+i,
|
||||
ytmp128+1440+i,
|
||||
y128+i,
|
||||
y128+720+i,
|
||||
y128+1440+i,
|
||||
twa128+j,
|
||||
twb128+j);
|
||||
}
|
||||
|
||||
if (scale_flag==1) {
|
||||
norm128 = set1_int16(dft_norm_table[14]);
|
||||
|
||||
for (i=0; i<2160; i++) {
|
||||
y128[i] = mulhi_int16(y128[i],norm128);
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
|
||||
};
|
||||
|
||||
static int16_t twa2304[767*2*4];
|
||||
static int16_t twb2304[767*2*4];
|
||||
|
||||
void dft2304(int16_t *x,int16_t *y,unsigned char scale_flag) // 768 x 3
|
||||
{
|
||||
int i,j;
|
||||
simd_q15_t *x128=(simd_q15_t *)x;
|
||||
simd_q15_t *y128=(simd_q15_t *)y;
|
||||
simd_q15_t *twa128=(simd_q15_t *)&twa2304[0];
|
||||
simd_q15_t *twb128=(simd_q15_t *)&twb2304[0];
|
||||
simd_q15_t x2128[2304];// = (simd_q15_t *)&x2128array[0];
|
||||
simd_q15_t ytmp128[2304];//=&ytmp128array3[0];
|
||||
|
||||
|
||||
|
||||
for (i=0,j=0; i<768; i++,j+=3) {
|
||||
x2128[i] = x128[j];
|
||||
x2128[i+768] = x128[j+1];
|
||||
x2128[i+1536] = x128[j+2];
|
||||
}
|
||||
|
||||
dft768((int16_t *)x2128,(int16_t *)ytmp128,1);
|
||||
dft768((int16_t *)(x2128+768),(int16_t *)(ytmp128+768),1);
|
||||
dft768((int16_t *)(x2128+1536),(int16_t *)(ytmp128+1536),1);
|
||||
|
||||
bfly3_tw1(ytmp128,ytmp128+768,ytmp128+1536,y128,y128+768,y128+1536);
|
||||
|
||||
for (i=1,j=0; i<768; i++,j++) {
|
||||
bfly3(ytmp128+i,
|
||||
ytmp128+768+i,
|
||||
ytmp128+1536+i,
|
||||
y128+i,
|
||||
y128+768+i,
|
||||
y128+1536+i,
|
||||
twa128+j,
|
||||
twb128+j);
|
||||
}
|
||||
|
||||
if (scale_flag==1) {
|
||||
norm128 = set1_int16(dft_norm_table[14]);
|
||||
|
||||
for (i=0; i<2304; i++) {
|
||||
y128[i] = mulhi_int16(y128[i],norm128);
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
|
||||
};
|
||||
|
||||
static int16_t twa2400[599*2*4];
|
||||
static int16_t twb2400[599*2*4];
|
||||
static int16_t twc2400[599*2*4];
|
||||
|
||||
void dft2400(int16_t *x,int16_t *y,unsigned char scale_flag) // 600 x 4
|
||||
{
|
||||
|
||||
int i,j;
|
||||
simd_q15_t *x128=(simd_q15_t *)x;
|
||||
simd_q15_t *y128=(simd_q15_t *)y;
|
||||
simd_q15_t *twa128=(simd_q15_t *)&twa2400[0];
|
||||
simd_q15_t *twb128=(simd_q15_t *)&twb2400[0];
|
||||
simd_q15_t *twc128=(simd_q15_t *)&twc2400[0];
|
||||
simd_q15_t x2128[2400];// = (simd_q15_t *)&x2128array[0];
|
||||
simd_q15_t ytmp128[2400];//=&ytmp128array2[0];
|
||||
|
||||
|
||||
|
||||
for (i=0,j=0; i<600; i++,j+=4) {
|
||||
x2128[i] = x128[j];
|
||||
x2128[i+600] = x128[j+1];
|
||||
x2128[i+1200] = x128[j+2];
|
||||
x2128[i+1800] = x128[j+3];
|
||||
}
|
||||
|
||||
dft600((int16_t *)x2128,(int16_t *)ytmp128,1);
|
||||
dft600((int16_t *)(x2128+600),(int16_t *)(ytmp128+600),1);
|
||||
dft600((int16_t *)(x2128+1200),(int16_t *)(ytmp128+1200),1);
|
||||
dft600((int16_t *)(x2128+1800),(int16_t *)(ytmp128+1800),1);
|
||||
|
||||
bfly4_tw1(ytmp128,ytmp128+600,ytmp128+1200,ytmp128+1800,y128,y128+600,y128+1200,y128+1800);
|
||||
|
||||
for (i=1,j=0; i<600; i++,j++) {
|
||||
bfly4(ytmp128+i,
|
||||
ytmp128+600+i,
|
||||
ytmp128+1200+i,
|
||||
ytmp128+1800+i,
|
||||
y128+i,
|
||||
y128+600+i,
|
||||
y128+1200+i,
|
||||
y128+1800+i,
|
||||
twa128+j,
|
||||
twb128+j,
|
||||
twc128+j);
|
||||
}
|
||||
|
||||
if (scale_flag==1) {
|
||||
norm128 = set1_int16(dft_norm_table[13]);
|
||||
for (i=0; i<2400; i++) {
|
||||
y128[i] = mulhi_int16(y128[i],norm128);
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
|
||||
};
|
||||
|
||||
static int16_t twa2592[863*2*4];
|
||||
static int16_t twb2592[863*2*4];
|
||||
|
||||
void dft2592(int16_t *x,int16_t *y,unsigned char scale_flag) // 864 x 3
|
||||
{
|
||||
int i,j;
|
||||
simd_q15_t *x128=(simd_q15_t *)x;
|
||||
simd_q15_t *y128=(simd_q15_t *)y;
|
||||
simd_q15_t *twa128=(simd_q15_t *)&twa2592[0];
|
||||
simd_q15_t *twb128=(simd_q15_t *)&twb2592[0];
|
||||
simd_q15_t x2128[2592];// = (simd_q15_t *)&x2128array[0];
|
||||
simd_q15_t ytmp128[2592];//=&ytmp128array3[0];
|
||||
|
||||
|
||||
|
||||
for (i=0,j=0; i<864; i++,j+=3) {
|
||||
x2128[i] = x128[j];
|
||||
x2128[i+864] = x128[j+1];
|
||||
x2128[i+1728] = x128[j+2];
|
||||
}
|
||||
|
||||
dft864((int16_t *)x2128,(int16_t *)ytmp128,1);
|
||||
dft864((int16_t *)(x2128+864),(int16_t *)(ytmp128+864),1);
|
||||
dft864((int16_t *)(x2128+1728),(int16_t *)(ytmp128+1728),1);
|
||||
|
||||
bfly3_tw1(ytmp128,ytmp128+864,ytmp128+1728,y128,y128+864,y128+1728);
|
||||
|
||||
for (i=1,j=0; i<864; i++,j++) {
|
||||
bfly3(ytmp128+i,
|
||||
ytmp128+864+i,
|
||||
ytmp128+1728+i,
|
||||
y128+i,
|
||||
y128+864+i,
|
||||
y128+1728+i,
|
||||
twa128+j,
|
||||
twb128+j);
|
||||
}
|
||||
|
||||
if (scale_flag==1) {
|
||||
norm128 = set1_int16(dft_norm_table[14]);
|
||||
|
||||
for (i=0; i<2592; i++) {
|
||||
y128[i] = mulhi_int16(y128[i],norm128);
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
|
||||
};
|
||||
|
||||
static int16_t twa2700[899*2*4];
|
||||
static int16_t twb2700[899*2*4];
|
||||
|
||||
void dft2700(int16_t *x,int16_t *y,unsigned char scale_flag) // 900 x 3
|
||||
{
|
||||
int i,j;
|
||||
simd_q15_t *x128=(simd_q15_t *)x;
|
||||
simd_q15_t *y128=(simd_q15_t *)y;
|
||||
simd_q15_t *twa128=(simd_q15_t *)&twa2700[0];
|
||||
simd_q15_t *twb128=(simd_q15_t *)&twb2700[0];
|
||||
simd_q15_t x2128[2700];// = (simd_q15_t *)&x2128array[0];
|
||||
simd_q15_t ytmp128[2700];//=&ytmp128array3[0];
|
||||
|
||||
|
||||
|
||||
for (i=0,j=0; i<900; i++,j+=3) {
|
||||
x2128[i] = x128[j];
|
||||
x2128[i+900] = x128[j+1];
|
||||
x2128[i+1800] = x128[j+2];
|
||||
}
|
||||
|
||||
dft900((int16_t *)x2128,(int16_t *)ytmp128,1);
|
||||
dft900((int16_t *)(x2128+900),(int16_t *)(ytmp128+900),1);
|
||||
dft900((int16_t *)(x2128+1800),(int16_t *)(ytmp128+1800),1);
|
||||
|
||||
bfly3_tw1(ytmp128,ytmp128+900,ytmp128+1800,y128,y128+900,y128+1800);
|
||||
|
||||
for (i=1,j=0; i<900; i++,j++) {
|
||||
bfly3(ytmp128+i,
|
||||
ytmp128+900+i,
|
||||
ytmp128+1800+i,
|
||||
y128+i,
|
||||
y128+900+i,
|
||||
y128+1800+i,
|
||||
twa128+j,
|
||||
twb128+j);
|
||||
}
|
||||
|
||||
if (scale_flag==1) {
|
||||
norm128 = set1_int16(dft_norm_table[14]);
|
||||
|
||||
for (i=0; i<2700; i++) {
|
||||
y128[i] = mulhi_int16(y128[i],norm128);
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
|
||||
};
|
||||
|
||||
static int16_t twa2880[959*2*4];
|
||||
static int16_t twb2880[959*2*4];
|
||||
|
||||
void dft2880(int16_t *x,int16_t *y,unsigned char scale_flag) // 960 x 3
|
||||
{
|
||||
int i,j;
|
||||
simd_q15_t *x128=(simd_q15_t *)x;
|
||||
simd_q15_t *y128=(simd_q15_t *)y;
|
||||
simd_q15_t *twa128=(simd_q15_t *)&twa2880[0];
|
||||
simd_q15_t *twb128=(simd_q15_t *)&twb2880[0];
|
||||
simd_q15_t x2128[2880];// = (simd_q15_t *)&x2128array[0];
|
||||
simd_q15_t ytmp128[2880];//=&ytmp128array3[0];
|
||||
|
||||
|
||||
|
||||
for (i=0,j=0; i<960; i++,j+=3) {
|
||||
x2128[i] = x128[j];
|
||||
x2128[i+960] = x128[j+1];
|
||||
x2128[i+1920] = x128[j+2];
|
||||
}
|
||||
|
||||
dft960((int16_t *)x2128,(int16_t *)ytmp128,1);
|
||||
dft960((int16_t *)(x2128+960),(int16_t *)(ytmp128+960),1);
|
||||
dft960((int16_t *)(x2128+1920),(int16_t *)(ytmp128+1920),1);
|
||||
|
||||
bfly3_tw1(ytmp128,ytmp128+960,ytmp128+1920,y128,y128+960,y128+1920);
|
||||
|
||||
for (i=1,j=0; i<960; i++,j++) {
|
||||
bfly3(ytmp128+i,
|
||||
ytmp128+960+i,
|
||||
ytmp128+1920+i,
|
||||
y128+i,
|
||||
y128+960+i,
|
||||
y128+1920+i,
|
||||
twa128+j,
|
||||
twb128+j);
|
||||
}
|
||||
|
||||
if (scale_flag==1) {
|
||||
norm128 = set1_int16(dft_norm_table[14]);
|
||||
|
||||
for (i=0; i<2880; i++) {
|
||||
y128[i] = mulhi_int16(y128[i],norm128);
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
|
||||
};
|
||||
|
||||
static int16_t twa2916[971*2*4];
|
||||
static int16_t twb2916[971*2*4];
|
||||
|
||||
void dft2916(int16_t *x,int16_t *y,unsigned char scale_flag) // 972 x 3
|
||||
{
|
||||
int i,j;
|
||||
simd_q15_t *x128=(simd_q15_t *)x;
|
||||
simd_q15_t *y128=(simd_q15_t *)y;
|
||||
simd_q15_t *twa128=(simd_q15_t *)&twa2916[0];
|
||||
simd_q15_t *twb128=(simd_q15_t *)&twb2916[0];
|
||||
simd_q15_t x2128[2916];// = (simd_q15_t *)&x2128array[0];
|
||||
simd_q15_t ytmp128[2916];//=&ytmp128array3[0];
|
||||
|
||||
|
||||
|
||||
for (i=0,j=0; i<972; i++,j+=3) {
|
||||
x2128[i] = x128[j];
|
||||
x2128[i+972] = x128[j+1];
|
||||
x2128[i+1944] = x128[j+2];
|
||||
}
|
||||
|
||||
dft972((int16_t *)x2128,(int16_t *)ytmp128,1);
|
||||
dft972((int16_t *)(x2128+972),(int16_t *)(ytmp128+972),1);
|
||||
dft972((int16_t *)(x2128+1944),(int16_t *)(ytmp128+1944),1);
|
||||
|
||||
bfly3_tw1(ytmp128,ytmp128+972,ytmp128+1944,y128,y128+972,y128+1944);
|
||||
|
||||
for (i=1,j=0; i<972; i++,j++) {
|
||||
bfly3(ytmp128+i,
|
||||
ytmp128+972+i,
|
||||
ytmp128+1944+i,
|
||||
y128+i,
|
||||
y128+972+i,
|
||||
y128+1944+i,
|
||||
twa128+j,
|
||||
twb128+j);
|
||||
}
|
||||
|
||||
if (scale_flag==1) {
|
||||
norm128 = set1_int16(dft_norm_table[14]);
|
||||
|
||||
for (i=0; i<2916; i++) {
|
||||
y128[i] = mulhi_int16(y128[i],norm128);
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
|
||||
};
|
||||
|
||||
static int16_t twa3000[599*8]__attribute__((aligned(32)));
|
||||
static int16_t twb3000[599*8]__attribute__((aligned(32)));
|
||||
static int16_t twc3000[599*8]__attribute__((aligned(32)));
|
||||
static int16_t twd3000[599*8]__attribute__((aligned(32)));
|
||||
|
||||
void dft3000(int16_t *x,int16_t *y,unsigned char scale_flag) // 600 * 5
|
||||
{
|
||||
|
||||
int i,j;
|
||||
simd_q15_t *x128=(simd_q15_t *)x;
|
||||
simd_q15_t *y128=(simd_q15_t *)y;
|
||||
simd_q15_t *twa128=(simd_q15_t *)&twa3000[0];
|
||||
simd_q15_t *twb128=(simd_q15_t *)&twb3000[0];
|
||||
simd_q15_t *twc128=(simd_q15_t *)&twc3000[0];
|
||||
simd_q15_t *twd128=(simd_q15_t *)&twd3000[0];
|
||||
simd_q15_t x2128[3000];// = (simd_q15_t *)&x2128array[0];
|
||||
simd_q15_t ytmp128[3000];//=&ytmp128array2[0];
|
||||
|
||||
|
||||
|
||||
for (i=0,j=0; i<600; i++,j+=5) {
|
||||
x2128[i] = x128[j];
|
||||
x2128[i+600] = x128[j+1];
|
||||
x2128[i+1200] = x128[j+2];
|
||||
x2128[i+1800] = x128[j+3];
|
||||
x2128[i+2400] = x128[j+4];
|
||||
}
|
||||
|
||||
dft600((int16_t *)x2128,(int16_t *)ytmp128,1);
|
||||
dft600((int16_t *)(x2128+600),(int16_t *)(ytmp128+600),1);
|
||||
dft600((int16_t *)(x2128+1200),(int16_t *)(ytmp128+1200),1);
|
||||
dft600((int16_t *)(x2128+1800),(int16_t *)(ytmp128+1800),1);
|
||||
dft600((int16_t *)(x2128+2400),(int16_t *)(ytmp128+2400),1);
|
||||
|
||||
bfly5_tw1(ytmp128,ytmp128+600,ytmp128+1200,ytmp128+1800,ytmp128+2400,y128,y128+600,y128+1200,y128+1800,y128+2400);
|
||||
|
||||
for (i=1,j=0; i<600; i++,j++) {
|
||||
bfly5(ytmp128+i,
|
||||
ytmp128+600+i,
|
||||
ytmp128+1200+i,
|
||||
ytmp128+1800+i,
|
||||
ytmp128+2400+i,
|
||||
y128+i,
|
||||
y128+600+i,
|
||||
y128+1200+i,
|
||||
y128+1800+i,
|
||||
y128+2400+i,
|
||||
twa128+j,
|
||||
twb128+j,
|
||||
twc128+j,
|
||||
twd128+j);
|
||||
}
|
||||
|
||||
if (scale_flag==1) {
|
||||
norm128 = set1_int16(dft_norm_table[15]);
|
||||
|
||||
for (i=0; i<3000; i++) {
|
||||
y128[i] = mulhi_int16(y128[i],norm128);
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
|
||||
}
|
||||
|
||||
static int16_t twa3240[1079*2*4];
|
||||
static int16_t twb3240[1079*2*4];
|
||||
|
||||
void dft3240(int16_t *x,int16_t *y,unsigned char scale_flag) // 1080 x 3
|
||||
{
|
||||
int i,j;
|
||||
simd_q15_t *x128=(simd_q15_t *)x;
|
||||
simd_q15_t *y128=(simd_q15_t *)y;
|
||||
simd_q15_t *twa128=(simd_q15_t *)&twa3240[0];
|
||||
simd_q15_t *twb128=(simd_q15_t *)&twb3240[0];
|
||||
simd_q15_t x2128[3240];// = (simd_q15_t *)&x2128array[0];
|
||||
simd_q15_t ytmp128[3240];//=&ytmp128array3[0];
|
||||
|
||||
|
||||
|
||||
for (i=0,j=0; i<1080; i++,j+=3) {
|
||||
x2128[i] = x128[j];
|
||||
x2128[i+1080] = x128[j+1];
|
||||
x2128[i+2160] = x128[j+2];
|
||||
}
|
||||
|
||||
dft1080((int16_t *)x2128,(int16_t *)ytmp128,1);
|
||||
dft1080((int16_t *)(x2128+1080),(int16_t *)(ytmp128+1080),1);
|
||||
dft1080((int16_t *)(x2128+2160),(int16_t *)(ytmp128+2160),1);
|
||||
|
||||
bfly3_tw1(ytmp128,ytmp128+1080,ytmp128+2160,y128,y128+1080,y128+2160);
|
||||
|
||||
for (i=1,j=0; i<1080; i++,j++) {
|
||||
bfly3(ytmp128+i,
|
||||
ytmp128+1080+i,
|
||||
ytmp128+2160+i,
|
||||
y128+i,
|
||||
y128+1080+i,
|
||||
y128+2160+i,
|
||||
twa128+j,
|
||||
twb128+j);
|
||||
}
|
||||
|
||||
if (scale_flag==1) {
|
||||
norm128 = set1_int16(dft_norm_table[14]);
|
||||
|
||||
for (i=0; i<3240; i++) {
|
||||
y128[i] = mulhi_int16(y128[i],norm128);
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
|
||||
};
|
||||
|
||||
void init_rad4(int N,int16_t *tw) {
|
||||
|
||||
int16_t *twa = tw;
|
||||
@@ -9492,7 +10403,7 @@ void init_rad4_rep(int N,int16_t *twa,int16_t *twb,int16_t *twc) {
|
||||
int i,j;
|
||||
|
||||
for (i=1;i<(N/4);i++) {
|
||||
twa[0] = (int16_t)round(32767.0*cos(2*M_PI*i/N));
|
||||
twa[0] = (int16_t)round(32767.0*cos(2*M_PI*i/N));
|
||||
twa[1] = -(int16_t)round(32767.0*sin(2*M_PI*i/N));
|
||||
twb[0] = (int16_t)round(32767.0*cos(2*M_PI*2*i/N));
|
||||
twb[1] = -(int16_t)round(32767.0*sin(2*M_PI*2*i/N));
|
||||
@@ -9525,7 +10436,7 @@ void init_rad2_rep(int N,int16_t *twa) {
|
||||
int i,j;
|
||||
|
||||
for (i=1;i<(N/2);i++) {
|
||||
twa[0] = (int16_t)round(32767.0*cos(2*M_PI*i/N));
|
||||
twa[0] = (int16_t)round(32767.0*cos(2*M_PI*i/N));
|
||||
twa[1] = -(int16_t)round(32767.0*sin(2*M_PI*i/N));
|
||||
for (j=1;j<4;j++) {
|
||||
((int32_t*)twa)[j]=((int32_t*)twa)[0];
|
||||
@@ -9551,7 +10462,7 @@ void init_rad3_rep(int N,int16_t *twa,int16_t *twb) {
|
||||
int i,j;
|
||||
|
||||
for (i=1;i<(N/3);i++) {
|
||||
twa[0] = (int16_t)round(32767.0*cos(2*M_PI*i/N));
|
||||
twa[0] = (int16_t)round(32767.0*cos(2*M_PI*i/N));
|
||||
twa[1] = -(int16_t)round(32767.0*sin(2*M_PI*i/N));
|
||||
twb[0] = (int16_t)round(32767.0*cos(2*M_PI*2*i/N));
|
||||
twb[1] = -(int16_t)round(32767.0*sin(2*M_PI*2*i/N));
|
||||
@@ -9569,7 +10480,7 @@ void init_rad5_rep(int N,int16_t *twa,int16_t *twb,int16_t *twc,int16_t *twd) {
|
||||
int i,j;
|
||||
|
||||
for (i=1;i<(N/5);i++) {
|
||||
twa[0] = (int16_t)round(32767.0*cos(2*M_PI*i/N));
|
||||
twa[0] = (int16_t)round(32767.0*cos(2*M_PI*i/N));
|
||||
twa[1] = -(int16_t)round(32767.0*sin(2*M_PI*i/N));
|
||||
twb[0] = (int16_t)round(32767.0*cos(2*M_PI*2*i/N));
|
||||
twb[1] = -(int16_t)round(32767.0*sin(2*M_PI*2*i/N));
|
||||
@@ -9586,7 +10497,7 @@ void init_rad5_rep(int N,int16_t *twa,int16_t *twb,int16_t *twc,int16_t *twd) {
|
||||
twa+=8;
|
||||
twb+=8;
|
||||
twc+=8;
|
||||
twd+=8;
|
||||
twd+=8;
|
||||
}
|
||||
}
|
||||
/*----------------------------------------------------------------*/
|
||||
@@ -9600,7 +10511,7 @@ int dfts_autoinit(void)
|
||||
init_rad2(8192,tw8192);
|
||||
init_rad4(16384,tw16384);
|
||||
init_rad2(32768,tw32768);
|
||||
|
||||
|
||||
init_rad3(1536,twa1536,twb1536);
|
||||
init_rad3(3072,twa3072,twb3072);
|
||||
init_rad3(6144,twa6144,twb6144);
|
||||
@@ -9645,6 +10556,24 @@ int dfts_autoinit(void)
|
||||
init_rad3_rep(1080,twa1080,twb1080);
|
||||
init_rad4_rep(1152,twa1152,twb1152,twc1152);
|
||||
init_rad4_rep(1200,twa1200,twb1200,twc1200);
|
||||
init_rad3_rep(1296,twa1296,twb1296);
|
||||
init_rad3_rep(1440,twa1440,twb1440);
|
||||
init_rad5_rep(1500,twa1500,twb1500,twc1500,twd1500);
|
||||
init_rad3_rep(1620,twa1620,twb1620);
|
||||
init_rad3_rep(1728,twa1728,twb1728);
|
||||
init_rad3_rep(1800,twa1800,twb1800);
|
||||
init_rad4_rep(1920,twa1920,twb1920, twc1920);
|
||||
init_rad3_rep(1944,twa1944,twb1944);
|
||||
init_rad3_rep(2160,twa2160,twb2160);
|
||||
init_rad3_rep(2304,twa2304,twb2304);
|
||||
init_rad4_rep(2400,twa2400,twb2400,twc2400);
|
||||
init_rad3_rep(2592,twa2592,twb2592);
|
||||
init_rad3_rep(2700,twa2700,twb2700);
|
||||
init_rad3_rep(2880,twa2880,twb2880);
|
||||
init_rad3_rep(2916,twa2916,twb2916);
|
||||
init_rad5_rep(3000,twa3000,twb3000,twc3000,twd3000);
|
||||
init_rad3_rep(3240,twa3240,twb3240);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -226,9 +226,26 @@ void dft1024(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft1080(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft1152(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft1200(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft1296(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft1440(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft1500(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft1536(int16_t *sigF,int16_t *sig,uint8_t scale_flag);
|
||||
void dft1620(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft1728(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft1800(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft1920(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft1944(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft2048(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft2160(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft2304(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft2400(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft2592(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft2700(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft2880(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft2916(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft3000(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft3072(int16_t *sigF,int16_t *sig,uint8_t scale_flag);
|
||||
void dft3240(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft4096(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft6144(int16_t *sigF,int16_t *sig,uint8_t scale_flag);
|
||||
void dft8192(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
@@ -283,21 +300,25 @@ typedef enum DFT_size_idx {
|
||||
DFT_108, DFT_120, DFT_128, DFT_144, DFT_180, DFT_192, DFT_216, DFT_240,
|
||||
DFT_256, DFT_288, DFT_300, DFT_324, DFT_360, DFT_384, DFT_432, DFT_480,
|
||||
DFT_512, DFT_540, DFT_576, DFT_600, DFT_648, DFT_720, DFT_768, DFT_864,
|
||||
DFT_900, DFT_960, DFT_972, DFT_1024, DFT_1080, DFT_1152, DFT_1200, DFT_1536,
|
||||
DFT_2048, DFT_3072, DFT_4096, DFT_6144, DFT_8192, DFT_9216, DFT_12288, DFT_18432,
|
||||
DFT_24576, DFT_36864, DFT_49152, DFT_73728, DFT_98304,
|
||||
DFT_900, DFT_960, DFT_972, DFT_1024, DFT_1080, DFT_1152, DFT_1200, DFT_1296,
|
||||
DFT_1440, DFT_1500, DFT_1536, DFT_1620, DFT_1728, DFT_1800, DFT_1920, DFT_1944,
|
||||
DFT_2048, DFT_2160, DFT_2304, DFT_2400, DFT_2592, DFT_2700, DFT_2880, DFT_2916,
|
||||
DFT_3000, DFT_3072, DFT_3240, DFT_4096, DFT_6144, DFT_8192, DFT_9216, DFT_12288,
|
||||
DFT_18432, DFT_24576, DFT_36864, DFT_49152, DFT_73728, DFT_98304,
|
||||
DFT_SIZE_IDXTABLESIZE
|
||||
} dft_size_idx_t;
|
||||
|
||||
#ifdef OAIDFTS_MAIN
|
||||
adftfunc_t dft_ftab[]={
|
||||
dft12, dft24, dft36, dft48, dft60, dft72, dft96,
|
||||
dft108, dft120, dft128, dft144, dft180, dft192, dft216, dft240,
|
||||
dft108, dft120, dft128, dft144, dft180, dft192, dft216, dft240,
|
||||
dft256, dft288, dft300, dft324, dft360, dft384, dft432, dft480,
|
||||
dft512, dft540, dft576, dft600, dft648, dft720, dft768, dft864,
|
||||
dft900, dft960, dft972, dft1024, dft1080, dft1152, dft1200, dft1536,
|
||||
dft2048, dft3072, dft4096, dft6144, dft8192, dft9216, dft12288, dft18432,
|
||||
dft24576, dft36864, dft49152, dft73728, dft98304
|
||||
dft900, dft960, dft972, dft1024, dft1080, dft1152, dft1200, dft1296,
|
||||
dft1440, dft1500, dft1536, dft1620, dft1728, dft1800, dft1920, dft1944,
|
||||
dft2048, dft2160, dft2304, dft2400, dft2592, dft2700, dft2880, dft2916,
|
||||
dft3000, dft3072, dft3240, dft4096, dft6144, dft8192, dft9216, dft12288,
|
||||
dft18432, dft24576, dft36864, dft49152, dft73728, dft98304
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -309,9 +330,9 @@ typedef enum idft_size_idx {
|
||||
} idft_size_idx_t;
|
||||
#ifdef OAIDFTS_MAIN
|
||||
aidftfunc_t idft_ftab[]={
|
||||
idft128, idft256, idft512, idft1024, idft1536, idft2048, idft3072, idft4096,
|
||||
idft6144, idft8192, idft9216, idft12288, idft18432, idft24576, idft36864, idft49152,
|
||||
idft73728, idft98304
|
||||
idft128, idft256, idft512, idft1024, idft1536, idft2048, idft3072, idft4096,
|
||||
idft6144, idft8192, idft9216, idft12288, idft18432, idft24576, idft36864, idft49152,
|
||||
idft73728, idft98304
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
*/
|
||||
|
||||
#include "PHY/defs_eNB.h"
|
||||
#include "PHY/defs_gNB.h"
|
||||
#include "PHY/phy_extern.h"
|
||||
#include "PHY/LTE_TRANSPORT/transport_proto.h"
|
||||
#include "SCHED/sched_eNB.h"
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
//Dummy NR defs to avoid linking errors
|
||||
|
||||
#include "PHY/defs_gNB.h"
|
||||
#include "nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h"
|
||||
#include "openair2/NR_PHY_INTERFACE/NR_IF_Module.h"
|
||||
#include "openair1/PHY/LTE_TRANSPORT/transport_common.h"
|
||||
|
||||
void handle_nfapi_nr_pdcch_pdu(PHY_VARS_gNB *gNB,
|
||||
int frame, int slot,
|
||||
nfapi_nr_dl_tti_pdcch_pdu *pdcch_pdu){}
|
||||
|
||||
void handle_nr_nfapi_ssb_pdu(PHY_VARS_gNB *gNB,int frame,int slot,
|
||||
nfapi_nr_dl_tti_request_pdu_t *dl_tti_pdu){}
|
||||
|
||||
int16_t find_nr_dlsch(uint16_t rnti, PHY_VARS_gNB *gNB,find_type_t type){return 0;}
|
||||
void handle_nr_nfapi_pdsch_pdu(PHY_VARS_gNB *gNB,int frame,int slot,
|
||||
nfapi_nr_dl_tti_pdsch_pdu *pdsch_pdu,
|
||||
uint8_t *sdu){
|
||||
}
|
||||
int l1_north_init_gNB(void){return 0;}
|
||||
|
||||
uint8_t slot_ahead=6;
|
||||
//uint8_t nfapi_mode=0;
|
||||
NR_IF_Module_t *NR_IF_Module_init(int Mod_id) {return NULL;}
|
||||
|
||||
void handle_nfapi_nr_ul_dci_pdu(PHY_VARS_gNB *gNB,
|
||||
int frame, int slot,
|
||||
nfapi_nr_ul_dci_request_pdus_t *ul_dci_request_pdu){}
|
||||
void nr_fill_ulsch(PHY_VARS_gNB *gNB,
|
||||
int frame,
|
||||
int slot,
|
||||
nfapi_nr_pusch_pdu_t *ulsch_pdu){}
|
||||
void nr_fill_pucch(PHY_VARS_gNB *gNB,
|
||||
int frame,
|
||||
int slot,
|
||||
nfapi_nr_pucch_pdu_t *pucch_pdu){}
|
||||
void nr_fill_prach(PHY_VARS_gNB *gNB,
|
||||
int SFN,
|
||||
int Slot,
|
||||
nfapi_nr_prach_pdu_t *prach_pdu){}
|
||||
void nr_fill_prach_ru(RU_t *ru,
|
||||
int SFN,
|
||||
int Slot,
|
||||
nfapi_nr_prach_pdu_t *prach_pdu){}
|
||||
|
||||
void nr_phy_config_request(NR_PHY_Config_t *gNB){}
|
||||
|
||||
void install_nr_schedule_handlers(NR_IF_Module_t *if_inst){}
|
||||
|
||||
void nr_dump_frame_parms(NR_DL_FRAME_PARMS *fp){}
|
||||
@@ -0,0 +1,52 @@
|
||||
//Dummy NR defs to avoid linking errors
|
||||
|
||||
#include "PHY/defs_gNB.h"
|
||||
#include "nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h"
|
||||
#include "openair2/NR_PHY_INTERFACE/NR_IF_Module.h"
|
||||
#include "openair1/PHY/LTE_TRANSPORT/transport_common.h"
|
||||
|
||||
void handle_nfapi_nr_pdcch_pdu(PHY_VARS_gNB *gNB,
|
||||
int frame, int slot,
|
||||
nfapi_nr_dl_tti_pdcch_pdu *pdcch_pdu){}
|
||||
|
||||
void handle_nr_nfapi_ssb_pdu(PHY_VARS_gNB *gNB,int frame,int slot,
|
||||
nfapi_nr_dl_tti_request_pdu_t *dl_tti_pdu){}
|
||||
|
||||
int16_t find_nr_dlsch(uint16_t rnti, PHY_VARS_gNB *gNB,find_type_t type){return 0;}
|
||||
void handle_nr_nfapi_pdsch_pdu(PHY_VARS_gNB *gNB,int frame,int slot,
|
||||
nfapi_nr_dl_tti_pdsch_pdu *pdsch_pdu,
|
||||
uint8_t *sdu){
|
||||
}
|
||||
int l1_north_init_gNB(void){return 0;}
|
||||
|
||||
uint8_t slot_ahead=6;
|
||||
//uint8_t nfapi_mode=0;
|
||||
NR_IF_Module_t *NR_IF_Module_init(int Mod_id) {return NULL;}
|
||||
|
||||
void handle_nfapi_nr_ul_dci_pdu(PHY_VARS_gNB *gNB,
|
||||
int frame, int slot,
|
||||
nfapi_nr_ul_dci_request_pdus_t *ul_dci_request_pdu){}
|
||||
void nr_fill_ulsch(PHY_VARS_gNB *gNB,
|
||||
int frame,
|
||||
int slot,
|
||||
nfapi_nr_pusch_pdu_t *ulsch_pdu){}
|
||||
void nr_fill_pucch(PHY_VARS_gNB *gNB,
|
||||
int frame,
|
||||
int slot,
|
||||
nfapi_nr_pucch_pdu_t *pucch_pdu){}
|
||||
void nr_fill_prach(PHY_VARS_gNB *gNB,
|
||||
int SFN,
|
||||
int Slot,
|
||||
nfapi_nr_prach_pdu_t *prach_pdu){}
|
||||
void nr_fill_prach_ru(RU_t *ru,
|
||||
int SFN,
|
||||
int Slot,
|
||||
nfapi_nr_prach_pdu_t *prach_pdu){}
|
||||
|
||||
void nr_phy_config_request(NR_PHY_Config_t *gNB){}
|
||||
|
||||
void install_nr_schedule_handlers(NR_IF_Module_t *if_inst){}
|
||||
|
||||
//void nr_dump_frame_parms(NR_DL_FRAME_PARMS *fp){}
|
||||
|
||||
|
||||
@@ -33,6 +33,12 @@
|
||||
#include "PHY/NR_TRANSPORT/nr_transport_proto.h"
|
||||
#include "PHY/NR_TRANSPORT/nr_dlsch.h"
|
||||
#include "PHY/NR_TRANSPORT/nr_dci.h"
|
||||
#include "nfapi/oai_integration/vendor_ext.h"
|
||||
|
||||
extern int oai_nfapi_dl_tti_req(nfapi_nr_dl_tti_request_t *dl_config_req);
|
||||
extern int oai_nfapi_tx_data_req(nfapi_nr_tx_data_request_t *tx_data_req);
|
||||
extern int oai_nfapi_ul_dci_req(nfapi_nr_ul_dci_request_t *ul_dci_req);
|
||||
extern int oai_nfapi_ul_tti_req(nfapi_nr_ul_tti_request_t *ul_tti_req);
|
||||
|
||||
|
||||
extern uint8_t nfapi_mode;
|
||||
@@ -149,7 +155,7 @@ void handle_nr_nfapi_pdsch_pdu(PHY_VARS_gNB *gNB,int frame,int slot,
|
||||
}
|
||||
|
||||
void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
|
||||
|
||||
|
||||
PHY_VARS_gNB *gNB;
|
||||
// copy data from L2 interface into L1 structures
|
||||
module_id_t Mod_id = Sched_INFO->module_id;
|
||||
@@ -192,6 +198,7 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
|
||||
case NFAPI_NR_DL_TTI_SSB_PDU_TYPE:
|
||||
gNB->pbch_configured=1;
|
||||
|
||||
if(NFAPI_MODE != NFAPI_MODE_VNF)
|
||||
handle_nr_nfapi_ssb_pdu(gNB,frame,slot,
|
||||
dl_tti_pdu);
|
||||
|
||||
@@ -199,7 +206,7 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
|
||||
|
||||
case NFAPI_NR_DL_TTI_PDCCH_PDU_TYPE:
|
||||
AssertFatal(pdcch_received == 0, "pdcch_received is not 0, we can only handle one PDCCH PDU per slot\n");
|
||||
LOG_D(PHY,"frame %d, slot %d, Got NFAPI_NR_DL_TTI_PDCCH_PDU_TYPE for %d.%d\n",frame,slot,DL_req->SFN,DL_req->Slot);
|
||||
if(NFAPI_MODE != NFAPI_MODE_VNF)
|
||||
handle_nfapi_nr_pdcch_pdu(gNB,
|
||||
frame, slot,
|
||||
&dl_tti_pdu->pdcch_pdu);
|
||||
@@ -222,33 +229,61 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
|
||||
AssertFatal(TX_req->pdu_list[pduIndex].num_TLV == 1, "TX_req->pdu_list[%d].num_TLV %d != 1\n",
|
||||
pduIndex,TX_req->pdu_list[pduIndex].num_TLV);
|
||||
uint8_t *sdu = (uint8_t *)TX_req->pdu_list[pduIndex].TLVs[0].value.direct;
|
||||
if(NFAPI_MODE != NFAPI_MODE_VNF)
|
||||
handle_nr_nfapi_pdsch_pdu(gNB,frame,slot,&dl_tti_pdu->pdsch_pdu, sdu);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if (UL_tti_req!=NULL) memcpy(&gNB->UL_tti_req,UL_tti_req,sizeof(nfapi_nr_ul_tti_request_t));
|
||||
if(NFAPI_MODE != NFAPI_MODE_VNF)
|
||||
for (int i=0;i<number_ul_dci_pdu;i++) {
|
||||
handle_nfapi_nr_ul_dci_pdu(gNB, frame, slot, &UL_dci_req->ul_dci_pdu_list[i]);
|
||||
}
|
||||
|
||||
if(NFAPI_MODE != NFAPI_MODE_VNF)
|
||||
for (int i = 0; i < number_ul_tti_pdu; i++) {
|
||||
switch (UL_tti_req->pdus_list[i].pdu_type) {
|
||||
case NFAPI_NR_UL_CONFIG_PUSCH_PDU_TYPE:
|
||||
LOG_D(PHY,"frame %d, slot %d, Got NFAPI_NR_UL_TTI_PUSCH_PDU_TYPE for %d.%d\n", frame, slot, UL_tti_req->SFN, UL_tti_req->Slot);
|
||||
nr_fill_ulsch(gNB,UL_tti_req->SFN, UL_tti_req->Slot, &UL_tti_req->pdus_list[i].pusch_pdu);
|
||||
break;
|
||||
case NFAPI_NR_UL_CONFIG_PUCCH_PDU_TYPE:
|
||||
LOG_D(PHY,"frame %d, slot %d, Got NFAPI_NR_UL_TTI_PUCCH_PDU_TYPE for %d.%d\n", frame, slot, UL_tti_req->SFN, UL_tti_req->Slot);
|
||||
nr_fill_pucch(gNB,UL_tti_req->SFN, UL_tti_req->Slot, &UL_tti_req->pdus_list[i].pucch_pdu);
|
||||
break;
|
||||
case NFAPI_NR_UL_CONFIG_PRACH_PDU_TYPE:
|
||||
LOG_D(PHY,"frame %d, slot %d, Got NFAPI_NR_UL_TTI_PRACH_PDU_TYPE for %d.%d\n", frame, slot, UL_tti_req->SFN, UL_tti_req->Slot);
|
||||
nfapi_nr_prach_pdu_t *prach_pdu = &UL_tti_req->pdus_list[i].prach_pdu;
|
||||
nr_fill_prach(gNB, UL_tti_req->SFN, UL_tti_req->Slot, prach_pdu);
|
||||
if (gNB->RU_list[0]->if_south == LOCAL_RF) nr_fill_prach_ru(gNB->RU_list[0], UL_tti_req->SFN, UL_tti_req->Slot, prach_pdu);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(NFAPI_MODE != NFAPI_MONOLITHIC && number_ul_tti_pdu>0)
|
||||
{
|
||||
oai_nfapi_ul_tti_req(UL_tti_req);
|
||||
}
|
||||
|
||||
for (int i=0;i<number_ul_dci_pdu;i++) {
|
||||
handle_nfapi_nr_ul_dci_pdu(gNB, frame, slot, &UL_dci_req->ul_dci_pdu_list[i]);
|
||||
if (NFAPI_MODE != NFAPI_MONOLITHIC && Sched_INFO->UL_dci_req->numPdus!=0)
|
||||
{
|
||||
oai_nfapi_ul_dci_req(Sched_INFO->UL_dci_req);
|
||||
}
|
||||
|
||||
if (NFAPI_MODE != NFAPI_MONOLITHIC)
|
||||
{
|
||||
if(Sched_INFO->DL_req->dl_tti_request_body.nPDUs>0)
|
||||
{
|
||||
Sched_INFO->DL_req->SFN = frame;
|
||||
Sched_INFO->DL_req->Slot = slot;
|
||||
oai_nfapi_dl_tti_req(Sched_INFO->DL_req);
|
||||
}
|
||||
if (Sched_INFO->TX_req->Number_of_PDUs > 0)
|
||||
{
|
||||
oai_nfapi_tx_data_req(Sched_INFO->TX_req);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for (int i = 0; i < number_ul_tti_pdu; i++) {
|
||||
switch (UL_tti_req->pdus_list[i].pdu_type) {
|
||||
case NFAPI_NR_UL_CONFIG_PUSCH_PDU_TYPE:
|
||||
LOG_D(PHY,"frame %d, slot %d, Got NFAPI_NR_UL_TTI_PUSCH_PDU_TYPE for %d.%d\n", frame, slot, UL_tti_req->SFN, UL_tti_req->Slot);
|
||||
nr_fill_ulsch(gNB,UL_tti_req->SFN, UL_tti_req->Slot, &UL_tti_req->pdus_list[i].pusch_pdu);
|
||||
break;
|
||||
case NFAPI_NR_UL_CONFIG_PUCCH_PDU_TYPE:
|
||||
LOG_D(PHY,"frame %d, slot %d, Got NFAPI_NR_UL_TTI_PUCCH_PDU_TYPE for %d.%d\n", frame, slot, UL_tti_req->SFN, UL_tti_req->Slot);
|
||||
nr_fill_pucch(gNB,UL_tti_req->SFN, UL_tti_req->Slot, &UL_tti_req->pdus_list[i].pucch_pdu);
|
||||
break;
|
||||
case NFAPI_NR_UL_CONFIG_PRACH_PDU_TYPE:
|
||||
LOG_D(PHY,"frame %d, slot %d, Got NFAPI_NR_UL_TTI_PRACH_PDU_TYPE for %d.%d\n", frame, slot, UL_tti_req->SFN, UL_tti_req->Slot);
|
||||
nfapi_nr_prach_pdu_t *prach_pdu = &UL_tti_req->pdus_list[i].prach_pdu;
|
||||
nr_fill_prach(gNB, UL_tti_req->SFN, UL_tti_req->Slot, prach_pdu);
|
||||
if (gNB->RU_list[0]->if_south == LOCAL_RF) nr_fill_prach_ru(gNB->RU_list[0], UL_tti_req->SFN, UL_tti_req->Slot, prach_pdu);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -36,6 +36,11 @@
|
||||
#include "nfapi_nr_interface.h"
|
||||
#include "nfapi_nr_interface_scf.h"
|
||||
|
||||
// added
|
||||
void handle_nr_nfapi_ssb_pdu(PHY_VARS_gNB *gNB,
|
||||
int frame,int slot,
|
||||
nfapi_nr_dl_tti_request_pdu_t *dl_tti_pdu);
|
||||
|
||||
void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO);
|
||||
|
||||
void handle_nfapi_nr_csirs_pdu(PHY_VARS_gNB *gNB,
|
||||
@@ -52,3 +57,8 @@ void handle_nr_nfapi_pdsch_pdu(PHY_VARS_gNB *gNB,int frame,int slot,
|
||||
|
||||
|
||||
void nr_fill_indication(PHY_VARS_gNB *gNB, int frame, int slot_rx, int UE_id, uint8_t harq_pid, uint8_t crc_flag);
|
||||
//added
|
||||
|
||||
void handle_nfapi_nr_ul_dci_pdu(PHY_VARS_gNB *gNB,
|
||||
int frame, int slot,
|
||||
nfapi_nr_ul_dci_request_pdus_t *ul_dci_request_pdu);
|
||||
|
||||
@@ -161,7 +161,7 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
|
||||
}
|
||||
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_gNB_COMMON_TX,1);
|
||||
if (nfapi_mode == 0 || nfapi_mode == 1) {
|
||||
if (NFAPI_MODE == NFAPI_MONOLITHIC || NFAPI_MODE == NFAPI_MODE_PNF) {
|
||||
if ((!(frame%ssb_frame_periodicity))) // generate SSB only for given frames according to SSB periodicity
|
||||
nr_common_signal_procedures(gNB,frame, slot);
|
||||
}
|
||||
@@ -563,6 +563,11 @@ void phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx)
|
||||
|
||||
gNB_I0_measurements(gNB);
|
||||
|
||||
// measure enegry in SS=10 L=4, nb_rb = 18, first_rb = 0 (corresponds to msg3)
|
||||
int offset = 10*gNB->frame_parms.ofdm_symbol_size + gNB->frame_parms.first_carrier_offset;
|
||||
int power_rxF = signal_energy_nodc(&gNB->common_vars.rxdataF[0][offset],12*18);
|
||||
LOG_D(PHY,"frame %d, slot %d: UL signal energy %d\n",frame_rx,slot_rx,power_rxF);
|
||||
|
||||
for (int i=0;i<NUMBER_OF_NR_PUCCH_MAX;i++){
|
||||
NR_gNB_PUCCH_t *pucch = gNB->pucch[i];
|
||||
if (pucch) {
|
||||
@@ -658,6 +663,8 @@ void phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx)
|
||||
}
|
||||
#endif
|
||||
|
||||
T(T_BENETEL, T_INT(frame_rx), T_INT(slot_rx), T_BUFFER(&gNB->common_vars.rxdataF[0][0], 2048*4*14));
|
||||
|
||||
uint8_t symbol_start = ulsch_harq->ulsch_pdu.start_symbol_index;
|
||||
uint8_t symbol_end = symbol_start + ulsch_harq->ulsch_pdu.nr_of_symbols;
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_RX_PUSCH,1);
|
||||
|
||||
@@ -295,7 +295,7 @@ harq_result_t uplink_harq_process(NR_UE_ULSCH_t *ulsch, int harq_pid, int ndi, u
|
||||
|
||||
/* 38.321 5.4.2.1 2> if the uplink grant was received on PDCCH for the C-RNTI and the HARQ buffer of the identified process is empty */
|
||||
if ((ulsch->harq_processes[harq_pid]->first_tx == 1) && (rnti_type == _C_RNTI_)) { /* no transmission yet on this process so consider its harq buffer as empty */
|
||||
ulsch->harq_processes[harq_pid]->first_tx = 0;
|
||||
ulsch->harq_processes[harq_pid]->first_tx = 0;
|
||||
ulsch->harq_processes[harq_pid]->pusch_pdu.pusch_data.new_data_indicator = ndi; /* store first value of ndi */
|
||||
ulsch->harq_processes[harq_pid]->round = 0;
|
||||
ulsch->harq_processes[harq_pid]->subframe_scheduling_flag = 1;
|
||||
|
||||
@@ -56,7 +56,7 @@ UE_nr_rxtx_proc_t proc;
|
||||
int32_t uplink_frequency_offset[MAX_NUM_CCs][4];
|
||||
|
||||
double cpuf;
|
||||
uint8_t nfapi_mode = 0;
|
||||
//uint8_t nfapi_mode = 0;
|
||||
uint16_t NB_UE_INST = 1;
|
||||
|
||||
uint8_t const nr_rv_round_map[4] = {0, 2, 1, 3};
|
||||
|
||||
@@ -81,7 +81,7 @@ double cpuf;
|
||||
|
||||
int sf_ahead=4 ;
|
||||
int sl_ahead=0;
|
||||
uint8_t nfapi_mode = 0;
|
||||
//uint8_t nfapi_mode = 0;
|
||||
uint64_t downlink_frequency[MAX_NUM_CCs][4];
|
||||
|
||||
// dummy functions
|
||||
@@ -151,6 +151,12 @@ nr_rrc_gNB_process_GTPV1U_CREATE_TUNNEL_RESP(
|
||||
return 0;
|
||||
}
|
||||
|
||||
int nr_derive_key(int alg_type, uint8_t alg_id,
|
||||
const uint8_t key[32], uint8_t **out)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void config_common(int Mod_idP,
|
||||
int pdsch_AntennaPorts,
|
||||
NR_ServingCellConfigCommon_t *scc
|
||||
@@ -172,6 +178,13 @@ int is_x2ap_enabled(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
//nFAPI P7 dummy functions
|
||||
|
||||
int oai_nfapi_dl_tti_req(nfapi_nr_dl_tti_request_t *dl_config_req) { return(0); }
|
||||
int oai_nfapi_tx_data_req(nfapi_nr_tx_data_request_t *tx_data_req){ return(0); }
|
||||
int oai_nfapi_ul_dci_req(nfapi_nr_ul_dci_request_t *ul_dci_req){ return(0); }
|
||||
int oai_nfapi_ul_tti_req(nfapi_nr_ul_tti_request_t *ul_tti_req){ return(0); }
|
||||
|
||||
int8_t nr_rrc_ue_decode_NR_SIB1_Message(module_id_t module_id, uint8_t gNB_index, uint8_t *const bufferP, const uint8_t buffer_len) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2,9 +2,16 @@ int oai_nfapi_hi_dci0_req(nfapi_hi_dci0_request_t *hi_dci0_req) { re
|
||||
int oai_nfapi_tx_req(nfapi_tx_request_t *tx_req) { return(0); }
|
||||
int oai_nfapi_dl_config_req(nfapi_dl_config_request_t *dl_config_req) { return(0); }
|
||||
//int oai_nfapi_ul_config_req(nfapi_ul_config_request_t *ul_config_req) { return(0); }
|
||||
//int oai_nfapi_nr_dl_config_req(nfapi_nr_dl_config_request_t *dl_config_req) { return(0); }
|
||||
int oai_nfapi_dl_tti_req(nfapi_nr_dl_tti_request_t *dl_config_req) { return(0); }
|
||||
int oai_nfapi_tx_data_req(nfapi_nr_tx_data_request_t *tx_data_req){ return(0); }
|
||||
int oai_nfapi_ul_dci_req(nfapi_nr_ul_dci_request_t *ul_dci_req){ return(0); }
|
||||
int oai_nfapi_ul_tti_req(nfapi_nr_ul_tti_request_t *ul_tti_req){ return(0); }
|
||||
int32_t get_uldl_offset(int nr_bandP) { return(0); }
|
||||
NR_IF_Module_t *NR_IF_Module_init(int Mod_id) {return(NULL);}
|
||||
nfapi_mode_t nfapi_mod;
|
||||
nfapi_mode_t nfapi_getmode(void) {
|
||||
return nfapi_mod;
|
||||
}
|
||||
int dummy_nr_ue_dl_indication(nr_downlink_indication_t *dl_info) { return(0); }
|
||||
int dummy_nr_ue_ul_indication(nr_uplink_indication_t *ul_info) { return(0); }
|
||||
void nr_fill_dl_indication(nr_downlink_indication_t *dl_ind,
|
||||
|
||||
@@ -2,7 +2,10 @@ int oai_nfapi_hi_dci0_req(nfapi_hi_dci0_request_t *hi_dci0_req) { re
|
||||
int oai_nfapi_tx_req(nfapi_tx_request_t *tx_req) { return(0); }
|
||||
int oai_nfapi_dl_config_req(nfapi_dl_config_request_t *dl_config_req) { return(0); }
|
||||
int oai_nfapi_ul_config_req(nfapi_ul_config_request_t *ul_config_req) { return(0); }
|
||||
//int oai_nfapi_nr_dl_config_req(nfapi_nr_dl_config_request_t *dl_config_req) { return(0); }
|
||||
int oai_nfapi_dl_tti_req(nfapi_nr_dl_tti_request_t *dl_config_req) { return(0); }
|
||||
int oai_nfapi_tx_data_req(nfapi_nr_tx_data_request_t *tx_data_req){ return(0); }
|
||||
int oai_nfapi_ul_dci_req(nfapi_nr_ul_dci_request_t *ul_dci_req){ return(0); }
|
||||
int oai_nfapi_ul_tti_req(nfapi_nr_ul_tti_request_t *ul_tti_req){ return(0); }
|
||||
int32_t get_uldl_offset(int nr_bandP) { return(0); }
|
||||
NR_IF_Module_t *NR_IF_Module_init(int Mod_id) {return(NULL);}
|
||||
int dummy_nr_ue_dl_indication(nr_downlink_indication_t *dl_info) { return(0); }
|
||||
|
||||
@@ -239,6 +239,7 @@ ngap_gNB_config_t ngap_config;
|
||||
uint32_t ngap_generate_gNB_id(void) {return 0;}
|
||||
void configure_nfapi_pnf(char *vnf_ip_addr, int vnf_p5_port, char *pnf_ip_addr, int pnf_p7_port, int vnf_p7_port) { return;}
|
||||
void configure_nfapi_vnf(char *vnf_addr, int vnf_p5_port) { return;}
|
||||
|
||||
void configure_nr_nfapi_pnf(char *vnf_ip_addr, int vnf_p5_port, char *pnf_ip_addr, int pnf_p7_port, int vnf_p7_port) { return;}
|
||||
void configure_nr_nfapi_vnf(char *vnf_addr, int vnf_p5_port) { return;}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -56,7 +56,7 @@ RAN_CONTEXT_t RC;
|
||||
int32_t uplink_frequency_offset[MAX_NUM_CCs][4];
|
||||
|
||||
double cpuf;
|
||||
uint8_t nfapi_mode = 0;
|
||||
//uint8_t nfapi_mode = 0;
|
||||
uint16_t NB_UE_INST = 1;
|
||||
|
||||
// needed for some functions
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
#include "OCG_vars.h"
|
||||
#include <openair2/LAYER2/MAC/mac_vars.h>
|
||||
#include <openair2/RRC/LTE/rrc_vars.h>
|
||||
//#include "openair1/SIMULATION/NR_PHY/nr_dummy_functions.c"
|
||||
|
||||
|
||||
#define NR_PRACH_DEBUG 1
|
||||
@@ -62,7 +63,7 @@ RU_t *ru;
|
||||
double cpuf;
|
||||
extern uint16_t prach_root_sequence_map0_3[838];
|
||||
openair0_config_t openair0_cfg[MAX_CARDS];
|
||||
uint8_t nfapi_mode=0;
|
||||
//uint8_t nfapi_mode=0;
|
||||
int sl_ahead = 0;
|
||||
|
||||
//void dump_nr_prach_config(NR_DL_FRAME_PARMS *frame_parms,uint8_t subframe);
|
||||
@@ -70,6 +71,10 @@ int sl_ahead = 0;
|
||||
/* temporary dummy implem of get_softmodem_optmask, till basic simulators implemented as device */
|
||||
uint64_t get_softmodem_optmask(void) {return 0;}
|
||||
softmodem_params_t *get_softmodem_params(void) {return 0;}
|
||||
int oai_nfapi_dl_tti_req(nfapi_nr_dl_tti_request_t *dl_config_req) { return(0); }
|
||||
int oai_nfapi_tx_data_req(nfapi_nr_tx_data_request_t *tx_data_req){ return(0); }
|
||||
int oai_nfapi_ul_dci_req(nfapi_nr_ul_dci_request_t *ul_dci_req){ return(0); }
|
||||
int oai_nfapi_ul_tti_req(nfapi_nr_ul_tti_request_t *ul_tti_req){ return(0); }
|
||||
|
||||
void
|
||||
rrc_data_ind(
|
||||
@@ -137,6 +142,12 @@ int8_t nr_rrc_ue_decode_NR_SIB1_Message(module_id_t module_id, uint8_t gNB_index
|
||||
return 0;
|
||||
}
|
||||
|
||||
int nr_derive_key(int alg_type, uint8_t alg_id,
|
||||
const uint8_t key[32], uint8_t **out)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv){
|
||||
|
||||
char c;
|
||||
|
||||
@@ -53,7 +53,7 @@ openair0_config_t openair0_cfg[MAX_CARDS];
|
||||
int32_t uplink_frequency_offset[MAX_NUM_CCs][4];
|
||||
|
||||
double cpuf;
|
||||
uint8_t nfapi_mode = 0;
|
||||
//uint8_t nfapi_mode = 0;
|
||||
uint16_t NB_UE_INST = 1;
|
||||
uint8_t const nr_rv_round_map[4] = {0, 2, 1, 3};
|
||||
uint8_t const nr_rv_round_map_ue[4] = {0, 2, 1, 3};
|
||||
|
||||
@@ -60,7 +60,7 @@ uint8_t const nr_rv_round_map[4] = {0, 2, 1, 3};
|
||||
uint8_t const nr_rv_round_map_ue[4] = {0, 2, 1, 3};
|
||||
|
||||
double cpuf;
|
||||
uint8_t nfapi_mode = 0;
|
||||
//uint8_t nfapi_mode = 0;
|
||||
uint16_t NB_UE_INST = 1;
|
||||
|
||||
// needed for some functions
|
||||
|
||||
@@ -76,9 +76,10 @@ RAN_CONTEXT_t RC;
|
||||
int32_t uplink_frequency_offset[MAX_NUM_CCs][4];
|
||||
|
||||
int sf_ahead=4 ;
|
||||
int slot_ahead=6 ;
|
||||
int sl_ahead=0;
|
||||
double cpuf;
|
||||
uint8_t nfapi_mode = 0;
|
||||
//uint8_t nfapi_mode = 0;
|
||||
uint64_t downlink_frequency[MAX_NUM_CCs][4];
|
||||
|
||||
|
||||
@@ -154,10 +155,22 @@ int is_x2ap_enabled(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
//nFAPI P7 dummy functions
|
||||
|
||||
int oai_nfapi_dl_tti_req(nfapi_nr_dl_tti_request_t *dl_config_req) { return(0); }
|
||||
int oai_nfapi_tx_data_req(nfapi_nr_tx_data_request_t *tx_data_req){ return(0); }
|
||||
int oai_nfapi_ul_dci_req(nfapi_nr_ul_dci_request_t *ul_dci_req){ return(0); }
|
||||
int oai_nfapi_ul_tti_req(nfapi_nr_ul_tti_request_t *ul_tti_req){ return(0); }
|
||||
int8_t nr_rrc_ue_decode_NR_SIB1_Message(module_id_t module_id, uint8_t gNB_index, uint8_t *const bufferP, const uint8_t buffer_len) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int nr_derive_key(int alg_type, uint8_t alg_id,
|
||||
const uint8_t key[32], uint8_t **out)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// needed for some functions
|
||||
uint16_t n_rnti = 0x1234;
|
||||
openair0_config_t openair0_cfg[MAX_CARDS];
|
||||
|
||||
@@ -142,6 +142,10 @@ void thread_top_init(char *thread_name,
|
||||
|
||||
int oai_nfapi_hi_dci0_req(nfapi_hi_dci0_request_t *hi_dci0_req) { return(0);}
|
||||
int oai_nfapi_tx_req(nfapi_tx_request_t *tx_req) { return(0); }
|
||||
int oai_nfapi_dl_tti_req(nfapi_nr_dl_tti_request_t *dl_config_req) { return(0); }
|
||||
int oai_nfapi_tx_data_req(nfapi_nr_tx_data_request_t *tx_data_req){ return(0); }
|
||||
int oai_nfapi_ul_dci_req(nfapi_nr_ul_dci_request_t *ul_dci_req){ return(0); }
|
||||
int oai_nfapi_ul_tti_req(nfapi_nr_ul_tti_request_t *ul_tti_req){ return(0); }
|
||||
|
||||
int oai_nfapi_dl_config_req(nfapi_dl_config_request_t *dl_config_req) { return(0); }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user