lte_param_init.c 3.16 KB
Newer Older
Raymond Knopp's avatar
Raymond Knopp committed
1
2
3
4
5
6
7
8
9
10
11
#include <string.h>
#include <math.h>
#include <unistd.h>
#include <execinfo.h>
#include <signal.h>

#include "SIMULATION/TOOLS/defs.h"
#include "PHY/types.h"
#include "PHY/defs.h"
#include "PHY/extern.h"

12
13
extern PHY_VARS_eNB *eNB;
extern PHY_VARS_UE *UE;
Raymond Knopp's avatar
Raymond Knopp committed
14
15
16
17
18
19
20
21
22
23
24
25
26
27

void lte_param_init(unsigned char N_tx, 
		    unsigned char N_rx,
		    unsigned char transmission_mode,
		    uint8_t extended_prefix_flag,
		    frame_t frame_type, 
		    uint16_t Nid_cell,
		    uint8_t tdd_config,
		    uint8_t N_RB_DL,
		    uint8_t threequarter_fs,
                    uint8_t osf,
		    uint32_t perfect_ce)
{

28
  LTE_DL_FRAME_PARMS *frame_parms;
Raymond Knopp's avatar
Raymond Knopp committed
29
30
31
  int i;

  printf("Start lte_param_init\n");
32
33
  eNB = malloc(sizeof(PHY_VARS_eNB));
  UE = malloc(sizeof(PHY_VARS_UE));
knopp's avatar
knopp committed
34
35
  memset((void*)eNB,0,sizeof(PHY_VARS_eNB));
  memset((void*)UE,0,sizeof(PHY_VARS_UE));
Raymond Knopp's avatar
Raymond Knopp committed
36
37
38
39
40
41
42
  //PHY_config = malloc(sizeof(PHY_CONFIG));
  mac_xface = malloc(sizeof(MAC_xface));

  srand(0);
  randominit(0);
  set_taus_seed(0);

43
  frame_parms = &(eNB->frame_parms);
44
45
46
47
48
49
50
51
52
53
54

  frame_parms->N_RB_DL            = N_RB_DL;   //50 for 10MHz and 25 for 5 MHz
  frame_parms->N_RB_UL            = N_RB_DL;
  frame_parms->threequarter_fs    = threequarter_fs;
  frame_parms->Ncp                = extended_prefix_flag;
  frame_parms->Ncp_UL             = extended_prefix_flag;
  frame_parms->Nid_cell           = Nid_cell;
  frame_parms->nushift            = Nid_cell%6;
  frame_parms->nb_antennas_tx     = N_tx;
  frame_parms->nb_antennas_rx     = N_rx;
  frame_parms->nb_antennas_tx_eNB = N_tx;
55
56
  frame_parms->phich_config_common.phich_resource         = oneSixth;
  frame_parms->phich_config_common.phich_duration         = normal;
57
58
59
60
61
62
63
64
65
66
67
68
69
  frame_parms->tdd_config         = tdd_config;
  frame_parms->frame_type         = frame_type;
  //  frame_parms->Csrs = 2;
  //  frame_parms->Bsrs = 0;
  //  frame_parms->kTC = 0;44
  //  frame_parms->n_RRC = 0;
  frame_parms->mode1_flag = (transmission_mode == 1)? 1 : 0;

  init_frame_parms(frame_parms,osf);

  //copy_lte_parms_to_phy_framing(frame_parms, &(PHY_config->PHY_framing));

  //  phy_init_top(frame_parms); //allocation
Raymond Knopp's avatar
Raymond Knopp committed
70

71
72
73
  UE->is_secondary_ue = 0;
  UE->frame_parms = *frame_parms;
  eNB->frame_parms = *frame_parms;
Raymond Knopp's avatar
Raymond Knopp committed
74

75
76
  phy_init_lte_top(frame_parms);
  dump_frame_parms(frame_parms);
Raymond Knopp's avatar
Raymond Knopp committed
77

78
79
80
  UE->measurements.n_adj_cells=0;
  UE->measurements.adj_cell_id[0] = Nid_cell+1;
  UE->measurements.adj_cell_id[1] = Nid_cell+2;
Raymond Knopp's avatar
Raymond Knopp committed
81
82

  for (i=0; i<3; i++)
83
    lte_gold(frame_parms,UE->lte_gold_table[i],Nid_cell+i);
Raymond Knopp's avatar
Raymond Knopp committed
84

85
  phy_init_lte_ue(UE,1,0);
knopp's avatar
knopp committed
86
  phy_init_lte_eNB(eNB,0,0);
Raymond Knopp's avatar
Raymond Knopp committed
87

88
89
  generate_pcfich_reg_mapping(&UE->frame_parms);
  generate_phich_reg_mapping(&UE->frame_parms);
Raymond Knopp's avatar
Raymond Knopp committed
90
91
92

  // DL power control init
  if (transmission_mode == 1) {
93
94
95
96
    eNB->pdsch_config_dedicated->p_a  = dB0; // 4 = 0dB
    ((eNB->frame_parms).pdsch_config_common).p_b = 0;
    UE->pdsch_config_dedicated->p_a  = dB0; // 4 = 0dB
    ((UE->frame_parms).pdsch_config_common).p_b = 0;
Raymond Knopp's avatar
Raymond Knopp committed
97
  } else { // rho_a = rhob
98
99
100
101
    eNB->pdsch_config_dedicated->p_a  = dB0; // 4 = 0dB
    ((eNB->frame_parms).pdsch_config_common).p_b = 1;
    UE->pdsch_config_dedicated->p_a  = dB0; // 4 = 0dB
    ((UE->frame_parms).pdsch_config_common).p_b = 1;
Raymond Knopp's avatar
Raymond Knopp committed
102
103
  }

104
  UE->perfect_ce = perfect_ce;
Raymond Knopp's avatar
Raymond Knopp committed
105
106
107
108
109

  printf("Done lte_param_init\n");


}