nfapi extension/ test nr-softmodem

This commit is contained in:
Guy De Souza
2018-03-27 13:52:16 +02:00
parent e88abf27c2
commit c4fd4dcab3
6 changed files with 222 additions and 80 deletions
-38
View File
@@ -1,38 +0,0 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#ifndef __INIT_DEFS_NR__H__
#define __INIT_DEFS_NR__H__
#include "PHY/defs.h"
typedef enum {
NR_MU_0=0,
NR_MU_1,
NR_MU_2,
NR_MU_3,
NR_MU_4,
} nr_numerology_index_e;
/// Subcarrier spacings in Hz indexed by numerology index
uint32_t nr_subcarrier_spacing[MAX_NUM_SUBCARRIER_SPACING] = {15e3, 30e3, 60e3, 120e3, 240e3};
#endif
+14 -4
View File
@@ -19,7 +19,17 @@
* contact@openairinterface.org
*/
#include "defs.h"
#include "defs_NR.h"
#include "assertions.h"
#include <math.h>
#include "../defs_NR.h"
int phy_init_nr_gNB(nfapi_param_t* nfapi_params)
{
nfapi_params->pnf_phy_rel15.number_of_phys = 1;
nfapi_params->pnf_phy_rel15.phy[0].mu =1;
nfapi_params->subframe_config.duplex_mode.value = 1; //FDD
nfapi_params->subframe_config.dl_cyclic_prefix_type.value = 0; //NORMAL
nfapi_params->rf_config.dl_channel_bandwidth.value = 106;
nfapi_params->rf_config.ul_channel_bandwidth.value = 106;
return 0;
}
+26 -22
View File
@@ -19,33 +19,39 @@
* contact@openairinterface.org
*/
#include "defs.h"
#include "defs_NR.h"
#include "../defs_NR.h"
#include "log.h"
/// Subcarrier spacings in Hz indexed by numerology index
uint32_t nr_subcarrier_spacing[MAX_NUM_SUBCARRIER_SPACING] = {15e3, 30e3, 60e3, 120e3, 240e3};
int nr_init_frame_parms(LTE_DL_FRAME_PARMS *frame_parms)
int nr_init_frame_parms(nfapi_param_t nfapi_params,
NR_DL_FRAME_PARMS *frame_parms)
{
int N_RB = nfapi_params.rf_config.dl_channel_bandwidth.value;
int Ncp = nfapi_params.subframe_config.dl_cyclic_prefix_type.value;
int mu = nfapi_params.pnf_phy_rel15.phy[0].mu;
#if DISABLE_LOG_X
printf("Initializing frame parms for mu %d, N_RB_DL %d, Ncp %d, osf %d\n",frame_parms->N_RB_DL,frame_parms->Ncp,osf);
printf("Initializing frame parms for mu %d, N_RB %d, Ncp %d\n",mu, N_RB, Ncp);
#else
LOG_I(PHY,"Initializing frame parms for mu %d, N_RB_DL %d, Ncp %d, osf %d\n",frame_parms->N_RB_DL,frame_parms->Ncp,osf);
LOG_I(PHY,"Initializing frame parms for mu %d, N_RB %d, Ncp %d\n",mu, N_RB, Ncp);
#endif
if (frame_parms->Ncp == EXTENDED)
AssertFatal(frame_parms->mu == NR_MU_2,"Invalid cyclic prefix %d for numerology index %d\n", frame_parms->Ncp, frame_parms->mu);
if (Ncp == 1) //EXTENDED, to be modified after lte defs are properly linked
AssertFatal(mu == NR_MU_2,"Invalid cyclic prefix %d for numerology index %d\n", Ncp, mu);
switch(frame_parms->mu) {
switch(mu) {
case NR_MU_0: //15kHz scs
frame_parms->scs = nr_subcarrier_spacing[NR_MU_0];
frame_parms->subcarrier_spacing = nr_subcarrier_spacing[NR_MU_0];
break;
case NR_MU_1: //30kHz scs
frame_parms->scs = nr_subcarrier_spacing[NR_MU_1];
frame_parms->subcarrier_spacing = nr_subcarrier_spacing[NR_MU_1];
switch(frame_parms->N_RB_DL){
switch(N_RB){
case 11:
case 24:
case 38:
@@ -85,14 +91,14 @@ int nr_init_frame_parms(LTE_DL_FRAME_PARMS *frame_parms)
case 245:
case 273:
default:
AssertFatal(1==0,"Number of resource blocks %d undefined for mu %d, frame parms = %p\n", frame_parms->N_RB_DL, frame_parms->mu, frame_parms);
AssertFatal(1==0,"Number of resource blocks %d undefined for mu %d, frame parms = %p\n", N_RB, mu, frame_parms);
}
break;
case NR_MU_2: //60kHz scs
frame_parms->scs = nr_subcarrier_spacing[NR_MU_2];
frame_parms->subcarrier_spacing = nr_subcarrier_spacing[NR_MU_2];
switch(frame_parms->N_RB_DL){ //FR1 bands only
switch(N_RB){ //FR1 bands only
case 11:
case 18:
case 38:
@@ -106,30 +112,28 @@ int nr_init_frame_parms(LTE_DL_FRAME_PARMS *frame_parms)
case 121:
case 135:
default:
AssertFatal(1==0,"Number of resource blocks %d undefined for mu %d, frame parms = %p\n", frame_parms->N_RB_DL, frame_parms->mu, frame_parms);
AssertFatal(1==0,"Number of resource blocks %d undefined for mu %d, frame parms = %p\n", N_RB, mu, frame_parms);
}
break;
case NR_MU_3:
frame_parms->scs = nr_subcarrier_spacing[NR_MU_3];
frame_parms->subcarrier_spacing = nr_subcarrier_spacing[NR_MU_3];
break;
case NR_MU_4:
frame_parms->scs = nr_subcarrier_spacing[NR_MU_4];
frame_parms->subcarrier_spacing = nr_subcarrier_spacing[NR_MU_4];
break;
default:
AssertFatal(1==0,"Invalid numerology index %d", frame_parms->mu);
AssertFatal(1==0,"Invalid numerology index %d", mu);
}
return 0;
}
void nr_dump_frame_parms(LTE_DL_FRAME_PARMS *frame_parms)
void nr_dump_frame_parms(NR_DL_FRAME_PARMS *frame_parms)
{
LOG_I(PHY,"frame_parms->mu=%d\n",frame_parms->mu);
LOG_I(PHY,"frame_parms->scs=%d\n",frame_parms->scs);
LOG_I(PHY,"frame_parms->N_RB_DL=%d\n",frame_parms->N_RB_DL);
LOG_I(PHY,"frame_parms->scs=%d\n",frame_parms->subcarrier_spacing);
LOG_I(PHY,"frame_parms->ofdm_symbol_size=%d\n",frame_parms->ofdm_symbol_size);
LOG_I(PHY,"frame_parms->samples_per_tti=%d\n",frame_parms->samples_per_tti);
LOG_I(PHY,"frame_parms->nb_prefix_samples0=%d\n",frame_parms->nb_prefix_samples0);