half frame index fix
This commit is contained in:
@@ -75,6 +75,9 @@
|
||||
#define NFAPI_VERSION_3_0_11 0x000
|
||||
#define NFAPI_VERSION_3_0_12 0x001
|
||||
|
||||
#define NFAPI_HALF_FRAME_INDEX_FIRST_HALF 0
|
||||
#define NFAPI_HALF_FRAME_INDEX_SECOND_HALF 1
|
||||
|
||||
// The IANA agreed port definition of the P5 SCTP VNF enpoint
|
||||
// http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=7701
|
||||
#define NFAPI_P5_SCTP_PORT 7701
|
||||
@@ -671,16 +674,12 @@ typedef struct {
|
||||
#define NFAPI_PHICH_CONFIG_PHICH_DURATION_TAG 0x0015
|
||||
#define NFAPI_PHICH_CONFIG_PHICH_POWER_OFFSET_TAG 0x0016
|
||||
|
||||
typedef enum {
|
||||
NFAPI_HALF_FRAME_INDEX_FIRST_HALF = 0,
|
||||
NFAPI_HALF_FRAME_INDEX_SECOND_HALF = 1
|
||||
} nfapi_half_frame_index_e;
|
||||
|
||||
typedef struct {
|
||||
nfapi_uint16_tlv_t primary_synchronization_signal_epre_eprers;
|
||||
nfapi_uint16_tlv_t secondary_synchronization_signal_epre_eprers;
|
||||
nfapi_uint16_tlv_t physical_cell_id;
|
||||
nfapi_half_frame_index_e half_frame_index;
|
||||
nfapi_uint16_tlv_t half_frame_index;
|
||||
nfapi_uint16_tlv_t ssb_subcarrier_offset;
|
||||
nfapi_uint16_tlv_t ssb_position_in_burst;
|
||||
nfapi_uint16_tlv_t ssb_periodicity;
|
||||
|
||||
@@ -345,7 +345,7 @@ void nr_phy_config_request(PHY_VARS_gNB *gNB)
|
||||
gNB_config->rf_config.tx_antenna_ports.value = 1;
|
||||
gNB_config->rf_config.dl_channel_bandwidth.value = 106;
|
||||
gNB_config->rf_config.ul_channel_bandwidth.value = 106;
|
||||
gNB_config->sch_config.half_frame_index = 0;
|
||||
gNB_config->sch_config.half_frame_index.value = 0;
|
||||
gNB_config->sch_config.ssb_subcarrier_offset.value = 0;
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
|
||||
/*! \file PHY/LTE_TRANSPORT/pbch.c
|
||||
* \brief Top-level routines for generating and decoding the PBCH/BCH physical/transport channel V8.6 2009-03
|
||||
* \author R. Knopp, F. Kaltenberger
|
||||
* \date 2011
|
||||
* \version 0.1
|
||||
* \company Eurecom
|
||||
* \email: knopp@eurecom.fr,florian.kaltenberger.fr
|
||||
* \note
|
||||
* \warning
|
||||
*/
|
||||
#include "PHY/defs.h"
|
||||
#include "PHY/CODING/extern.h"
|
||||
#include "PHY/CODING/lte_interleaver_inline.h"
|
||||
#include "defs.h"
|
||||
#include "extern.h"
|
||||
#include "PHY/extern.h"
|
||||
#include "PHY/sse_intrin.h"
|
||||
|
||||
//#define DEBUG_PBCH 1
|
||||
@@ -72,7 +72,7 @@ void nr_feptx0(RU_t *ru,int slot) {
|
||||
|
||||
slot_offset = subframe*fp->samples_per_subframe + (slot*(fp->samples_per_subframe / fp->slots_per_subframe));
|
||||
|
||||
LOG_I(PHY,"SFN/SF:RU:TX:%d/%d Generating slot %d\n",ru->proc.frame_tx, ru->proc.subframe_tx,slot);
|
||||
LOG_D(PHY,"SFN/SF:RU:TX:%d/%d Generating slot %d\n",ru->proc.frame_tx, ru->proc.subframe_tx,slot);
|
||||
|
||||
for (aa=0; aa<ru->nb_tx; aa++) {
|
||||
nr_normal_prefix_mod(&ru->common.txdataF_BF[aa][slot*slot_sizeF],
|
||||
|
||||
@@ -69,7 +69,7 @@ int nr_get_ssb_start_symbol(nfapi_config_request_t *cfg, NR_DL_FRAME_PARMS *fp)
|
||||
AssertFatal(0==1, "Invalid numerology index %d for the synchronization block\n", mu);
|
||||
}
|
||||
|
||||
if (cfg->sch_config.half_frame_index)
|
||||
if (cfg->sch_config.half_frame_index.value)
|
||||
symbol += (5 * fp->symbols_per_slot * fp->slots_per_subframe);
|
||||
|
||||
return symbol;
|
||||
|
||||
@@ -46,14 +46,16 @@ void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame, int subframe) {
|
||||
nfapi_config_request_t *cfg = &gNB->gNB_config;
|
||||
int **txdataF = gNB->common_vars.txdataF;
|
||||
uint8_t *pbch_pdu=&gNB->pbch_pdu[0];
|
||||
int ss_subframe = (cfg->sch_config.half_frame_index.value)? 0:5;
|
||||
|
||||
LOG_D(PHY,"common_signal_procedures: frame %d, subframe %d\n",frame,subframe);
|
||||
LOG_I(PHY,"common_signal_procedures: frame %d, subframe %d\n",frame,subframe);
|
||||
|
||||
int ssb_start_symbol = nr_get_ssb_start_symbol(cfg, fp);
|
||||
//nr_set_ssb_first_subcarrier(cfg);
|
||||
|
||||
if (subframe == (cfg->sch_config.half_frame_index)? 0:5)
|
||||
if (subframe == ss_subframe)
|
||||
{
|
||||
LOG_I(PHY,"SS TX: frame %d, subframe %d\n",frame,subframe);
|
||||
nr_generate_pss(gNB->d_pss, txdataF, AMP, ssb_start_symbol, cfg, fp);
|
||||
nr_generate_sss(gNB->d_sss, txdataF, AMP_OVER_2, ssb_start_symbol, cfg, fp);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user