enb.jinja2.cfg 26.7 KB
Newer Older
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
1 2
{#- XXX ORS -> provide defaults for: slave_instance_list #}
{#- XXX icell vs cell / iru vs ru everyhere + document it #}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
3
{#- XXX TDD check   #}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
4

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
5 6
{%- import 'amari_lte.jinja2'  as lte      with context %}
{%- import 'amari_slap.jinja2' as slaplte  with context %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
7 8 9 10 11 12 13 14 15 16 17
{%- set J               = slaplte.J %}
{%- set jcell_ru_ref    = slaplte.jcell_ru_ref %}
{%- set cfg             = slaplte.cfg %}

{#- for standalone testing via slapos-render-config.py
    NOTE: keep in sync with instance-enb.jinja2.cfg and ru/libinstance.jinja2.cfg   #}
{%- if _standalone is defined                                                 %}
{%-   set iru_dict   = {}                                                     %}
{%-   set icell_dict = {}                                                     %}
{%-   set ipeercell_dict = {}                                                 %}
{%-   do slaplte.load_iru_and_icell(iru_dict, icell_dict, icell_kind='enb')   %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
18
{%-   do slaplte.load_ipeercell(ipeercell_dict)                               %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
19 20
{%-   do slaplte.check_loaded_everything()                                    %}
{%- endif                                                                     %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
21

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
22
{#- do_lte/do_nr indicate whether we have LTE and/or NR cells #}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
23 24 25
{%- set do_lte = len(list(icell_dict|dictsort | selectattr('1._.cell_type', '==', 'lte'))) > 0 %}
{%- set do_nr  = len(list(icell_dict|dictsort | selectattr('1._.cell_type', '==', 'nr')))  > 0 %}

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
26

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
27
{#- start of the config -#}
28
{
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
29
  log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,s1ap.level=debug,s1ap.max_size=1,x2ap.level=debug,x2ap.max_size=1,rrc.level=debug,rrc.max_size=1,ngap.level=debug,ngap.max_size=1,xnap.level=debug,xnap.max_size=1,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
30 31 32 33 34 35
{%- if slapparameter_dict.get('log_phy_debug', False) -%}
    phy.level=debug
{%- else -%}
    phy.level=info
{%- endif -%}
    ,file.rotate=1G,file.path=/dev/null",
36 37
  log_filename: "{{ directory['log'] }}/enb.log",

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
38
{# instantiate radio units #}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
39
{{ lte.ru_config(iru_dict, slapparameter_dict) }}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
40

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
41
  {%- if slapparameter_dict.get('websocket_password', '') %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
42
  com_addr: "[{{ gtp_addr_v6 }}]:{{ slap_configuration['configuration.com_ws_port'] }}",
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
43 44 45 46
  com_auth: {
    password: "{{ slapparameter_dict['websocket_password'] }}",
  },
  {%- else %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
47
  com_addr: "{{ slap_configuration['configuration.com_addr'] }}:{{ slap_configuration['configuration.com_ws_port'] }}",
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
48
  {%- endif %}
49

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
50 51
{%  if do_lte %}
  // LTE core network + XXX X2 peers
52
  mme_list: [
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
53
{%-   for _, mme in slapparameter_dict.get('mme_list',
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
54 55
                        {'1':{'mme_addr': slap_configuration['configuration.mme_addr']}})
                        | dictsort %}
56
    {
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
57
      mme_addr: "{{ mme['mme_addr'] }}",
58
    },
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
59
{%-   endfor %}
60
  ],
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
61
{%- endif %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
62

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
63 64
{%  if do_nr %}
  // NR core network + XXX Xn pers
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
65
  afm_list: [
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
66
{%-   for _, afm in slapparameter_dict.get('afm_list',
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
67 68
                        {'1':{'afm_addr': slap_configuration['configuration.amf_addr']}})
                        | dictsort %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
69 70 71
    {
      afm_addr: "{{ afm['afm_addr'] }}",
    },
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
72
{%-   endfor %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
73
  ],
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
74
{%- endif %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
75

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
76 77
{#- X2/Xn TODO:  add info about peers as shared instances - one instance per peer *ENB*.
          then query SlapOS Master about cells configured on that peer ENB and
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
78
          depending on whether LTE and/or NR cells are there add X2 and/or Xn peers #}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
79
{# XXX move ^^^ ? #}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
80 81 82 83 84 85 86 87 88
{% if slapparameter_dict.get('xn_peers', '') %}
  xn_peers: [
{%- for k in slapparameter_dict['xn_peers'] -%}
    "{{ slapparameter_dict['xn_peers'][k]['xn_addr'] }}",
{%- endfor -%}
  ],
{% endif %}

{% if slapparameter_dict.get('mme_list', '')  or  slapparameter_dict.get('afm_list', '') %}
89 90 91 92 93
{%   if slapparameter_dict.get('use_ipv4', False) %}
  gtp_addr: "{{ gtp_addr_v4 }}",
{%   else %}
  gtp_addr: "{{ gtp_addr_v6 }}",
{%   endif %}
94
{% else %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
95
  gtp_addr: "{{ slap_configuration['configuration.gtp_addr'] }}",
96
{% endif %}
97

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
98
{%- if do_lte %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
99
  enb_id: {{ cfg('enb_id') }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
100 101
{%- endif %}
{%- if do_nr %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
102 103 104
  gnb_id: {{ cfg('gnb_id') }},
  gnb_id_bits: {{ cfg('gnb_id_bits') }},
  en_dc_support: true,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
105
{%- endif %}
106

107
  // LTE cells
108
  cell_list: [
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
109
{%- for i, (cell_ref, icell) in enumerate(icell_dict|dictsort) %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
110 111 112 113 114
{%-   set cell = icell['_']                               %}
{%-   if cell.cell_type == 'lte'                          %}
{%-     set ru_ref = J(jcell_ru_ref(icell, icell_dict))   %}
{%-     set iru = iru_dict[ru_ref]                        %}
{%-     set ru = iru['_']                                 %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
115

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
116
        // {{ cell_ref }}  ({{ ru_ref }})
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
117
        {
118 119 120 121 122 123 124 125
          rf_port:      {{ ru._rf_port }},
          n_antenna_dl: {{ ru.n_antenna_dl }},
          n_antenna_ul: {{ ru.n_antenna_ul }},

          cell_id:      {{ cell.cell_id }},
          tac:          {{ cell.tac }},
          n_id_cell:    {{ cell.pci }},
          dl_earfcn:    {{ cell.dl_earfcn }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
126
          ul_earfcn:    {{ cell.ul_earfcn }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
127 128 129
          root_sequence_index: {{ cell.get('root_sequence_index',
                                    slapparameter_dict.get('root_sequence_index',
                                      204 + i)) }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
130

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
131
          // Handover   XXX same code for both LTE and NR
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
132 133 134 135 136 137
          ncell_list: [
            // Intra-ENB HO
{%-       for cell2_ref, icell2 in icell_dict|dictsort %}
{%-         set cell2 = icell2['_']                   %}
{%-         if cell2_ref != cell_ref %} {#- NOTE: HO to both LTE and NR #}
            {
138
{%-           if cell2.cell_type == 'lte' %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
139
              rat:        "eutra",
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
140
              cell_id:    {{ cfg('enb_id') }}{{ cell2.cell_id.removeprefix('0x') }}, // -> {{ cell2_ref }}
141 142 143 144
              n_id_cell:  {{ cell2.pci }},
              dl_earfcn:  {{ cell2.dl_earfcn }},
              tac:        {{ cell2.tac }},
{%-           elif cell2.cell_type == 'nr' %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
145
              rat:        "nr",
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
146
              cell_id:    {{ cell2.cell_id }},  // -> {{ cell2_ref }}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
147 148 149
{%-           else  %}
{%-             do bug('unreachable')   %}
{%-           endif %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
150 151 152 153 154
            },
{%-         endif %}
{%-       endfor %}

            // Inter-ENB HO
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
155 156 157
{#- TODO: add info about peers as shared instances - one instance per peer *ENB*.
          then query SlapOS Master about cells configured on that peer ENB and
          put them as peers here #}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185
{%-       for peercell_ref, ipeercell in ipeercell_dict|dictsort %}
{%-         set ncell = ipeercell['_']  %}
            {
{%-           if ncell.peer_cell_type == 'lte' %}
              rat:          "eutra",
              cell_id:      {{ ncell.e_cell_id }},  // -> {{ peercell_ref }}
              n_id_cell:    {{ ncell.pci }},
              dl_earfcn:    {{ ncell.dl_earfcn }},
              tac:          {{ ncell.tac }},
{%-           elif ncell.peer_cell_type == 'nr' %}
              rat:          "nr",
              nr_cell_id:   {{ ncell.nr_cell_id }}, // -> {{ peercell_ref }}
              gnb_id_bits:  {{ ncell.gnb_id_bits }},
              n_id_cell:    {{ ncell.pci }},
              dl_nr_arfcn:  {{ ncell.dl_nr_arfcn }},
              ssb_nr_arfcn: {{ ncell.ssb_nr_arfcn }},
              ul_nr_arfcn:  {{ ncell.ul_nr_arfcn }},
              tac:          {{ ncell.tac }},
              band:         {{ ncell.nr_band }},
              ssb_subcarrier_spacing: 30,
              ssb_period: 20,
              ssb_offset: 0,
              ssb_duration: 1,
{%-           else  %}
{%-             do bug('unreachable')   %}
{%-           endif %}
            },
{%-       endfor %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
186 187 188

          ],

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
189
          // Carrier Aggregation: LTE + LTE
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
190
          scell_list: [
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
191
{%-       for cell2_ref, icell2 in icell_dict|dictsort %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
192
{%-         set cell2 = icell2['_']                   %}
193
{%-         if cell2_ref != cell_ref  and  cell2.cell_type == 'lte' %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
194
            {
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
195
              cell_id: {{ cell2.cell_id }},  // + {{ cell2_ref }}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
196 197 198 199
              cross_carrier_scheduling: false,
            },
{%-         endif %}
{%-       endfor %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
200 201
          ],

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
202
{%-       if do_nr  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
203
          // Carrier Aggregation: LTE + NR
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
204 205 206 207 208 209 210 211 212 213 214 215 216
          en_dc_scg_cell_list: [
{%-         for cell2_ref, icell2 in icell_dict|dictsort %}
{%-           set cell2 = icell2['_']                   %}
{%-           if cell2_ref != cell_ref  and  cell2.cell_type == 'nr' %}
              {
                cell_id: {{ cell2.cell_id }}, // + {{ cell2_ref }}
              },
{%-           endif %}
{%-         endfor  %}
          ],
          // XXX nr_p_max_eutra = ?   (needed ?)
{%-       endif %}

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
217

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
218
          // tune LTE parameters for the cell
219
{%-       set tdd = (cell.rf_mode == 'tdd') %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
220
{%-       if tdd %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
221 222
          uldl_config: {{ lte.cell_tdd_config(cell) }},
          sp_config: 7,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
223 224
{%-       endif %}

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
225
{%-       set n_rb_dl = lte.cell_n_rb_dl(cell) %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
226
          n_rb_dl: {{ n_rb_dl }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
227
          si_coderate: {{ 0.30  if n_rb_dl == 6  else 0.20 }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
228 229

          pdsch_dedicated: {
230
            p_a: {{ {4: -6, 2: -3}.get(ru.n_antenna_dl, 0) }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
231
            p_b: -1,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
232 233
          },

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
234
          pdcch_format:       {{  1  if n_rb_dl == 6  else 2 }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
235
          prach_config_index: {{ 15  if n_rb_dl == 6  else 4 }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
236
          initial_cqi:        {{  5  if n_rb_dl == 6  else 3 }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
237

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
238 239 240
          pucch_dedicated: {
            n1_pucch_sr_count: 11,
            cqi_pucch_n_rb: 1,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
241
            n1_pucch_an_cs_count: 8,  {# XXX else "n1_pucch_an_cs_count must be > 0 for the CA Primary cell" #}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
242
            n3_pucch_an_n_rb: 3,      {# XXX else "n3_pucch_an_n_rb must be > 0 for the CA Primary cell" #}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
243
{%-         if tdd  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
244
            tdd_ack_nack_feedback_mode: "multiplexing", /* TDD only */
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
245
{%-         endif %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
246 247
          },

248
{%-       if ru.n_antenna_dl >= 2  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
249 250
          m_ri: 8,
          transmission_mode: 3,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
251 252
{%-       endif %}

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
253
          srs_dedicated: {
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
254
{%-       if n_rb_dl == 6  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
255 256
            srs_bandwidth_config: 7,
            srs_bandwidth: 1,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
257
{%-       elif n_rb_dl == 15  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
258 259
            srs_bandwidth_config: 6,
            srs_bandwidth: 1,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
260
{%-       elif n_rb_dl == 25  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
261 262
            srs_bandwidth_config: 3,
            srs_bandwidth: 1,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
263
{%-       elif n_rb_dl == 50  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
264 265
            srs_bandwidth_config: 2,
            srs_bandwidth: 2,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
266
{%-       elif n_rb_dl == 75  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
267 268 269 270 271 272 273 274 275 276
            srs_bandwidth_config: 2,
            srs_bandwidth: 2,
{%-       else  %}
            srs_bandwidth_config: 2,
            srs_bandwidth: 3,
{%-       endif %}
            srs_subframe_config: 3,
            srs_period: 40,
            srs_hopping_bandwidth: 0,
          },
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
277

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
278
{#- XXX do we want to differentiate whether it is ORS or Amarisoft SDR board ? #}
279
{%-       if ru.ru_type == 'sdr'   %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
280
          manual_ref_signal_power: true,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
281
{%-       endif %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
282

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
283 284 285 286 287 288 289 290
          drb_config: "{{ cell_ref }}-drb.cfg",

          sib_sched_list: [
            {
              filename: "{{ cell_ref }}-sib23.asn",
              si_periodicity: 16,
            },
          ],
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
291 292 293
        },
{%-   endif %}
{%- endfor %}
Joanne Hugé's avatar
Joanne Hugé committed
294 295 296
  ],

  cell_default: {
297
    plmn_list: [
298 299 300 301 302 303 304 305 306
{%- if slapparameter_dict.get('plmn_list', '') %}
{%- for i, k in enumerate(slapparameter_dict['plmn_list']) %}
{%- if i == 0 -%}
      {
{%- else -%}
      , {
{%- endif %}
      plmn: "{{ slapparameter_dict['plmn_list'][k]['plmn'] }}",
      reserved: {{ str(slapparameter_dict['plmn_list'][k].get('reserved', false)).lower() }},
Joanne Hugé's avatar
Joanne Hugé committed
307
      attach_without_pdn: {{ str(slapparameter_dict['plmn_list'][k].get('attach_without_pdn', false)).lower() }},
308 309 310 311 312
      }
{%- endfor -%}
{% else %}
      "00101",
{% endif %}
313 314 315 316
    ],
    cyclic_prefix: "normal",

    phich_duration: "normal",
317 318 319 320 321 322 323
    phich_resource: "1",

    si_value_tag: 0,
    cell_barred: false,
    intra_freq_reselection: true,
    q_rx_lev_min: -70,
    si_window_length: 40,
324

325
    si_pdcch_format: 2,
326

327
    n_symb_cch: 0,
328

329
    prach_freq_offset: -1,
330 331 332 333 334 335 336

    pusch_dedicated: {
      beta_offset_ack_index: 9,
      beta_offset_ri_index: 6,
      beta_offset_cqi_index: 6,
    },

337
    pusch_hopping_offset: -1,
338 339 340 341 342 343 344

    pusch_msg3_mcs: 0,


    dl_256qam: true,
    ul_64qam: true,

345
    sr_period: 20,
346

347
    cqi_period: 40,
348 349 350


    mac_config: {
351 352
       ul_max_harq_tx: 5,
       dl_max_harq_tx: 5,
353 354
    },

355
    pusch_max_its: 6,
356 357 358

    dpc: true,
    dpc_pusch_snr_target: 25,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
359
    dpc_pucch_snr_target: 25,
360 361 362 363

    cipher_algo_pref: [],
    integ_algo_pref: [2, 1],

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
364
    // XXX -> cell ?
365
    inactivity_timer: {{ slapparameter_dict.get('inactivity_timer', slap_configuration['configuration.default_lte_inactivity_timer']) }},
366 367 368 369 370 371 372 373 374 375 376 377 378 379 380

    srb_config: [
      {
        id: 1,
        maxRetxThreshold: 32,
        t_Reordering: 45,
        t_PollRetransmit: 60,
      },
      {
        id: 2 ,
        maxRetxThreshold: 32,
        t_Reordering: 45,
        t_PollRetransmit: 60,
      }
    ],
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397

  meas_config_desc: {
    a1_report_type: "rsrp",
    a1_rsrp: -70,
    a1_hysteresis: 0,
    a1_time_to_trigger: 640,
    a2_report_type: "rsrp",
    a2_rsrp: -80,
    a2_hysteresis: 0,
    a2_time_to_trigger: 640,
    a3_report_type: "rsrp",
    a3_offset: {{ slapparameter_dict.get('lte_handover_a3_offset', 6) }},
    a3_hysteresis: 0,
    a3_time_to_trigger: {{ slapparameter_dict.get('lte_handover_a3_time_to_trigger', 480) }},
  },
  meas_gap_config: "gp0",
  ho_from_meas: true,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
398
  },
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
399

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
400
  // NR cells
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
401 402
  nr_cell_list: [
{%- for i, (cell_ref, icell) in enumerate(icell_dict|dictsort) %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
403 404 405 406 407
{%-   set cell = icell['_']                               %}
{%-   if cell.cell_type == 'nr'                           %}
{%-     set ru_ref = J(jcell_ru_ref(icell, icell_dict))   %}
{%-     set iru = iru_dict[ru_ref]                        %}
{%-     set ru = iru['_']                                 %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
408

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
409
        // {{ cell_ref }}  ({{ ru_ref }})
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
410
        {
411 412 413
          rf_port:      {{ ru._rf_port }},
          n_antenna_dl: {{ ru.n_antenna_dl }},
          n_antenna_ul: {{ ru.n_antenna_ul }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
414

415 416 417 418
          cell_id:      {{ cell.cell_id }},
          n_id_cell:    {{ cell.pci }},
          band:         {{ cell.nr_band }},
          dl_nr_arfcn:  {{ cell.dl_nr_arfcn }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
419
          ul_nr_arfcn:  {{ cell.ul_nr_arfcn }},
420
          bandwidth:    {{ cell.bandwidth }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
421

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
422
          subcarrier_spacing: {{ 30  if cell.rf_mode == 'tdd'  else 15 }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
423
          ssb_nr_arfcn:   {{ cell.ssb_nr_arfcn }},
424
          ssb_pos_bitmap: {{ cell.ssb_pos_bitmap }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
425

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
426 427 428
          root_sequence_index: 1,   // XXX adjust from cfg('root_sequence_index') XXX place


Kirill Smelkov's avatar
.  
Kirill Smelkov committed
429
          // XXX peers for HO
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
430

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452
          // Carrier Aggregation: NR + NR
          scell_list: [
{%-       for cell2_ref, icell2 in icell_dict|dictsort %}
{%-         set cell2 = icell2['_']                   %}
{%-         if cell2_ref != cell_ref  and  cell2.cell_type == 'nr' %}
            {
              cell_id: {{ cell2.cell_id }},  // + {{ cell2_ref }}
            },
{%-         endif %}
{%-       endfor %}
          ],

{%-       if do_lte %}
          // Carrier Aggregation: NR + LTE
          nr_dc_scg_cell_list: [
{%-           for cell2_ref, icell2 in icell_dict|dictsort %}
{%-             set cell2 = icell2['_']                   %}
{%-             if cell2_ref != cell_ref  and  cell2.cell_type == 'lte' %}
                {
                  cell_id: {{ cell2.cell_id }}, // + {{ cell2_ref }}
                },
{%-             endif %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
453
{%-           endfor %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
454 455
          ],
{%-       endif %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
456 457 458 459 460

        // tune NR parameters for the cell
        {%- if slapparameter_dict.get('rrh', 'ORS') == "ORS" %}
            manual_ref_signal_power: true,
        {%- if 'XXX_one_watt' == "True" %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
461
            ss_pbch_block_power: {{ ru.tx_gain - 54 }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
462
        {%- else %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
463
            ss_pbch_block_power: {{ ru.tx_gain - 35 }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
464 465 466
        {%- endif -%}
        {%- endif %}

467
{%-       set tdd = (cell.rf_mode == 'tdd') %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
468
{%-       set tdd_config = lte.nr_cell_tdd_config(cell) if tdd else None %},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500

{%        if tdd_config == 1 %}
           tdd_ul_dl_config: {
             pattern1: {
               period: 5,
               dl_slots: 7,
               dl_symbols: 6,
               ul_slots: 2,
               ul_symbols: 4,
             },
           },
{%        elif tdd_config == 2 %}
           tdd_ul_dl_config: {
             pattern1: {
               period: 2.5,
               dl_slots: 3,
               dl_symbols: 10,
               ul_slots: 1,
               ul_symbols: 2,
             },
           },
{%        elif tdd_config == 3 %}
           tdd_ul_dl_config: {
             pattern1: {
                period: 5, /* in ms */
                dl_slots: 1,
                dl_symbols: 10,
                ul_slots: 8,
                ul_symbols: 2,
             },
           },
{%        endif %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
501

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
502
        },
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
503

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
504 505 506
{%-   endif %}
{%- endfor %}
  ],
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
507

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
508
{# XXX restore
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585
  nr_cell_default: {
    ssb_period: 20,

    plmn_list: [
{%- if slapparameter_dict.get('plmn_list', '') %}
{%- for i, k in enumerate(slapparameter_dict['plmn_list']) %}
{%- if i == 0 -%}
      {
{%- else -%}
      , {
{%- endif %}
      plmn: "{{ slapparameter_dict['plmn_list'][k]['plmn'] }}",
      tac: {{ slapparameter_dict['plmn_list'][k].get('tac', 100) }},
{%- if slapparameter_dict['plmn_list'][k].get('ranac', '') %}
      ranac: {{ slapparameter_dict['plmn_list'][k]['ranac'] }},
{%- endif %}
      reserved: {{ str(slapparameter_dict['plmn_list'][k].get('reserved', false)).lower() }},
      nssai: [
{%- if slapparameter_dict.get('nssai', '') %}
{%- for j, k in enumerate(slapparameter_dict['nssai']) %}
{%- if j == 0 %}
        {
{%- else -%}
        , {
{%- endif %}
         sst: {{ slapparameter_dict['nssai'][k]['sst'] }},
{%- if slapparameter_dict['nssai'][k].get('sd', '') %}
         sd: {{ slapparameter_dict['nssai'][k]['sd'] }},
{%- endif %}
        }
{%- endfor -%}
{% else %}
        {
         sst: 1,
        },
{% endif %}
      ],
      }
{%- endfor -%}
{% else %}
      {
      plmn: "00101",
      tac: 100,
      reserved: false,
      nssai: [
{%- if slapparameter_dict.get('nssai', '') %}
{%- for j, k in enumerate(slapparameter_dict['nssai']) %}
{%- if j == 0 %}
        {
{%- else -%}
        , {
{%- endif %}
         sst: {{ slapparameter_dict['nssai'][k]['sst'] }},
{%- if slapparameter_dict['nssai'][k].get('sd', '') %}
         sd: {{ slapparameter_dict['nssai'][k]['sd'] }},
{%- endif %}
        }
{%- endfor -%}
{% else %}
        {
         sst: 1,
        },
{% endif %}
       ],
      },
{%- endif %}
    ],

    si_window_length: 40,
    cell_barred: false,
    intra_freq_reselection: true,
    q_rx_lev_min: -70,
    q_qual_min: -20,

    sr_period: 40,
    dmrs_type_a_pos: 2,
    prach: {
Kirill Smelkov's avatar
Kirill Smelkov committed
586
      prach_config_index: 160,      // XXX TDD only & TDD_CONFIG != 4
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
587 588
      msg1_subcarrier_spacing: 30,
      msg1_fdm: 1,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
589
{% if ru.ru_type == 'sunwave' %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
590 591 592 593 594 595 596 597
      msg1_frequency_start: 0,
{% else %}
      msg1_frequency_start: -1,
{% endif %}
      zero_correlation_zone_config: 15,
      preamble_received_target_power: -110,
      preamble_trans_max: 7,
      power_ramping_step: 4,
Kirill Smelkov's avatar
Kirill Smelkov committed
598
      ra_response_window: {{ 20 if tdd else 10 }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
599 600 601 602 603 604
      restricted_set_config: "unrestricted_set",
      ra_contention_resolution_timer: 64,
      ssb_per_prach_occasion: 1,
      cb_preambles_per_ssb: 8,
    },
    pdcch: {
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
605
{% if ru.ru_type == 'sunwave' %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
606 607 608 609 610 611 612
      n_rb_coreset0: 48,
      n_symb_coreset0: 1,
{% endif %}
      search_space0_index: 0,
      dedicated_coreset: {
        rb_start: -1,
        l_crb: -1,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
613
{% if ru.ru_type == 'sunwave' %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642
        duration: 1,
{% else %}
        duration: 0,
{% endif %}
        precoder_granularity: "sameAsREG_bundle",
      },
      css: {
        n_candidates: [ 0, 0, 4, 0, 0 ],
      },
      rar_al_index: 2,
      si_al_index: 2,
{% if tdd_config == 3 %}
      uss: {
       n_candidates: [ 0, 8, 1, 0, 0 ],
       dci_0_1_and_1_1: true,
      },
{% else %}
      uss: {
        n_candidates: [ 0, 2, 1, 0, 0 ],
        dci_0_1_and_1_1: true,
      },
{% endif %}
      al_index: 1,
    },
    pdsch: {
      mapping_type: "typeA",
      dmrs_add_pos: 1,
      dmrs_type: 1,
      dmrs_max_len: 1,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
643
{% if ru.ru_type == 'sunwave' %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
644 645 646
      k0: 0,
      k1: [ 8, 7, 7, 6, 5, 4, 12, 11 ],
{% elif tdd_config == 3 %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
647
      k1: [4, 11],
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
648 649 650 651 652 653 654 655 656
{% endif %}
      mcs_table: "qam256",
      rar_mcs: 2,
      si_mcs: 6,
    },
    csi_rs: {
      nzp_csi_rs_resource: [
        {
          csi_rs_id: 0,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
657
{%- if ru.n_antenna_dl == 1     %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
658 659 660 661
          n_ports: 1,
          frequency_domain_allocation: "row2",
          bitmap: "100000000000",
          cdm_type: "no_cdm",
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
662
{%- elif ru.n_antenna_dl == 2   %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
663 664 665 666
          n_ports: 2,
          frequency_domain_allocation: "other",
          bitmap: "100000",
          cdm_type: "fd_cdm2",
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
667
{%- elif ru.n_antenna_dl == 4   %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
668 669 670 671
          n_ports: 4,
          frequency_domain_allocation: "row4",
          bitmap: "100",
          cdm_type: "fd_cdm2",
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
672
{%- elif ru.n_antenna_dl == 8   %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
673 674 675 676
          n_ports: 8,
          frequency_domain_allocation: "other",
          bitmap: "110011",
          cdm_type: "fd_cdm2",
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
677 678 679
{%- else  %}
{%-  do error(icell, "unsupported number of DL antennas")   %}
{%- endif %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835
          density: 1,
          first_symb: 4,
          rb_start: 0,
          l_crb: -1,
          power_control_offset: 0,
          power_control_offset_ss: 0,
          period: 80,
          offset: 1,
          qcl_info_periodic_csi_rs: 0,
        },
{% if tdd_config != 3 %}
        {
          csi_rs_id: 1,
          n_ports: 1,
          frequency_domain_allocation: "row1",
          bitmap: "0001",
          cdm_type: "no_cdm",
          density: 3,
          first_symb: 4,
          rb_start: 0,
          l_crb: -1,
          power_control_offset: 0,
          power_control_offset_ss: 0,
          period: 40,
          offset: 11,
          qcl_info_periodic_csi_rs: 0,
        },
        {
          csi_rs_id: 2,
          n_ports: 1,
          frequency_domain_allocation: "row1",
          bitmap: "0001",
          cdm_type: "no_cdm",
          density: 3,
          first_symb: 8,
          rb_start: 0,
          l_crb: -1,
          power_control_offset: 0,
          power_control_offset_ss: 0,
          period: 40,
          offset: 11,
          qcl_info_periodic_csi_rs: 0,
        },
        {
          csi_rs_id: 3,
          n_ports: 1,
          frequency_domain_allocation: "row1",
          bitmap: "0001",
          cdm_type: "no_cdm",
          density: 3,
          first_symb: 4,
          rb_start: 0,
          l_crb: -1,
          power_control_offset: 0,
          power_control_offset_ss: 0,
          period: 40,
          offset: 12,
          qcl_info_periodic_csi_rs: 0,
        },
        {
          csi_rs_id: 4,
          n_ports: 1,
          frequency_domain_allocation: "row1",
          bitmap: "0001",
          cdm_type: "no_cdm",
          density: 3,
          first_symb: 8,
          rb_start: 0,
          l_crb: -1,
          power_control_offset: 0,
          power_control_offset_ss: 0,
          period: 40,
          offset: 12,
          qcl_info_periodic_csi_rs: 0,
        },
{% endif %}
      ],
      nzp_csi_rs_resource_set: [
        {
          csi_rs_set_id: 0,
          nzp_csi_rs_resources: [ 0 ],
          repetition: false,
        },
{% if tdd_config != 3 %}
        {
          csi_rs_set_id: 1,
          nzp_csi_rs_resources: [ 1, 2, 3, 4 ],
          repetition: false,
          trs_info: true,
        },
{% endif %}
      ],
     csi_im_resource: [
        {
          csi_im_id: 0,
          pattern: 1,
          subcarrier_location: 8,
          symbol_location: 8,
          rb_start: 0,
          l_crb: -1,
          period: 80,
          offset: 1,
        },
      ],
      csi_im_resource_set: [
        {
          csi_im_set_id: 0,
          csi_im_resources: [ 0 ],
        }
      ],
      zp_csi_rs_resource: [
        {
          csi_rs_id: 0,
          frequency_domain_allocation: "row4",
          bitmap: "100",
          n_ports: 4,
          cdm_type: "fd_cdm2",
          first_symb: 8,
          density: 1,
          rb_start: 0,
          l_crb: -1,
          period: 80,
          offset: 1,
        },
      ],
      p_zp_csi_rs_resource_set: [
        {
          zp_csi_rs_resources: [ 0 ],
        },
      ],
      csi_resource_config: [
        {
          csi_rsc_config_id: 0,
          nzp_csi_rs_resource_set_list: [ 0 ],
          resource_type: "periodic",
        },
        {
          csi_rsc_config_id: 1,
          csi_im_resource_set_list: [ 0 ],
          resource_type: "periodic",
        },
{% if tdd_config != 3 %}
        {
          csi_rsc_config_id: 2,
          nzp_csi_rs_resource_set_list: [ 1 ],
          resource_type: "periodic",
        },
{% endif %}
      ],
      csi_report_config: [
        {
          resources_for_channel_measurement: 0,
          csi_im_resources_for_interference: 1,
          report_config_type: "periodic",
          period: 80,
          report_quantity: "CRI_RI_PMI_CQI",
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
836
{%- if ru.n_antenna_dl > 1  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
837 838 839
          codebook_config: {
            codebook_type: "type1",
            sub_type: "typeI_SinglePanel",
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
840 841
{%-   if ru.n_antenna_dl == 2     %}
{%-   elif ru.n_antenna_dl == 4   %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
842 843 844
            n1: 2,
            n2: 1,
            codebook_mode: 1,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
845
{%-   elif ru.n_antenna_dl == 8   %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
846 847 848
            n1: 4,
            n2: 1,
            codebook_mode: 1,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
849
{%-   endif                       %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
850
          },
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
851
{%- endif   %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884
          cqi_table: 2,
          subband_size: "value1",
        },
      ],
    },
    pucch: {
      dpc_snr_target: 25,
      pucch_group_hopping: "neither",
      hopping_id: -1,
      p0_nominal: -90,
        pucch1: {
          n_cs: 3,
          n_occ: 3,
          freq_hopping: true,
        },
        pucch2: {
          n_symb: 2,
          n_prb: 1,
          freq_hopping: true,
          simultaneous_harq_ack_csi: false,
          max_code_rate: 0.25,
        },
    },
    pusch: {
      mapping_type: "typeA",
      n_symb: 14,
      dmrs_add_pos: 1,
      dmrs_type: 1,
      dmrs_max_len: 1,
      tf_precoding: false,
      mcs_table: "qam256",
      mcs_table_tp: "qam256",
      ldpc_max_its: 5,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
885
{% if ru.ru_type == 'sunwave' %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
886 887 888
      k2: 4,
      msg3_k2: 7,
{% elif tdd_config == 3 %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
889
      k2: [11, 12, 4, 5, 6, 7, 7, 8],
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913
      msg3_k2: 7,
{% endif %}
      p0_nominal_with_grant: -84,
      msg3_mcs: 4,
      msg3_delta_power: 0,
      beta_offset_ack_index: 9,
    },
    mac_config: {
      msg3_max_harq_tx: 5,
      ul_max_harq_tx: 5,
      dl_max_harq_tx: 5,
      ul_max_consecutive_retx: 30,
      dl_max_consecutive_retx: 30,
      periodic_bsr_timer: 20,
      retx_bsr_timer: 320,
      periodic_phr_timer: 500,
      prohibit_phr_timer: 200,
      phr_tx_power_factor_change: "dB3",
      sr_prohibit_timer: 0,
      sr_trans_max: 64,
    },
    cipher_algo_pref: [],
    integ_algo_pref: [2, 1],
    inactivity_timer: {{ slapparameter_dict.get('inactivity_timer', slap_configuration['configuration.default_nr_inactivity_timer']) }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
914

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
915
    drb_config: "{{ cell_ref }}-drb.cfg",
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
916

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935
    meas_config_desc: {
      a1_report_type: "rsrp",
      a1_rsrp: -60,
      a1_hysteresis: 10,
      a1_time_to_trigger: 100,
      a2_report_type: "rsrp",
      a2_rsrp: -70,
      a2_hysteresis: 0,
      a2_time_to_trigger: 100,
      a3_report_type: "rsrp",
      a3_offset: {{ slapparameter_dict.get('nr_handover_a3_offset', 6) }},
      a3_hysteresis: 0,
      a3_time_to_trigger: {{ slapparameter_dict.get('nr_handover_time_to_trigger', 100) }},
      ssb_rsrq_filter_coeff: 3,
      ssb_sinr_filter_coeff: 5
    },
    meas_gap_config: {
      pattern_id: 0
    },
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
936
  },
Kirill Smelkov's avatar
Kirill Smelkov committed
937
#}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
938
}