pilots_mbsfn.c 2.58 KB
Newer Older
1 2 3 4 5
/*
 * 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
6
 * the OAI Public License, Version 1.1  (the "License"); you may not use this file
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
 * 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
 */

22
/*! \file PHY/LTE_TRANSPORT/pilots_mbsfn.c
23
* \brief Top-level routines for generating DL mbsfn reference signals
24 25 26 27 28 29 30 31
* \authors S. Paranche, R. Knopp
* \date 2012
* \version 0.1
* \company Eurecom
* \email: knopp@eurecom.fr
* \note
* \warning
*/
32 33

#include "PHY/defs_eNB.h"
knopp's avatar
knopp committed
34
#include "PHY/LTE_REFSIG/lte_refsig.h"
35

36
int generate_mbsfn_pilot(PHY_VARS_eNB *eNB,
knopp's avatar
knopp committed
37
			 eNB_rxtx_proc_t *proc,
38
                         int32_t **txdataF,
39 40
                         int16_t amp)

41
{
42

43
  LTE_DL_FRAME_PARMS *frame_parms = &eNB->frame_parms;
44
  uint32_t subframe_offset,Nsymb,samples_per_symbol;
knopp's avatar
knopp committed
45
  int subframe = proc->subframe_tx;
46

47 48

  if (subframe<0 || subframe>= 10) {
49
    LOG_E(PHY,"generate_mbsfn_pilots_subframe: subframe not in range (%d)\n",subframe);
50 51 52 53
    return(-1);
  }

  Nsymb = (frame_parms->Ncp==NORMAL) ? 7 : 6;
54

55 56
  subframe_offset = subframe*frame_parms->ofdm_symbol_size*Nsymb<<1;
  samples_per_symbol = frame_parms->ofdm_symbol_size;
57 58 59 60 61

  //    printf("tti %d : offset %d (slot %d)\n",tti,tti_offset,slot_offset);
  //Generate Pilots

  //antenna 4 symbol 2 Slot 0
62
  lte_dl_mbsfn(eNB,
63 64 65 66 67 68 69 70
               &txdataF[0][subframe_offset+(2*samples_per_symbol)],
               amp,
               subframe,
               0);



  //antenna 4 symbol 0 slot 1
71
  lte_dl_mbsfn(eNB,
72 73 74 75 76 77
               &txdataF[0][subframe_offset+(6*samples_per_symbol)],
               amp,
               subframe,
               1);

  //antenna 4 symbol 4 slot 1
78
  lte_dl_mbsfn(eNB,
79 80 81 82 83 84
               &txdataF[0][subframe_offset+(10*samples_per_symbol)],
               amp,
               subframe,
               2);

  return(0);
85 86
}

87