enb.jinja2.cfg 27.6 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
{%- import 'slaplte.jinja2' as slaplte  with context %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
6 7 8 9 10 11 12 13 14 15 16
{%- 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
17
{%-   do slaplte.load_ipeercell(ipeercell_dict)                               %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
18 19
{%-   do slaplte.check_loaded_everything()                                    %}
{%- endif                                                                     %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
20

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
21
{#- do_lte/do_nr indicate whether we have LTE and/or NR cells #}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
22 23 24
{%- 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
25

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
26 27 28 29 30 31 32 33
{#- nr_cell_tdd_config returns tdd_config for NR cell. #}
{%- macro nr_cell_tdd_config(cell) %}
{%-   set _ = {'5ms 2UL 7DL 4/6 (default)':         1,
               '2.5ms 1UL 3DL 2/10':                2,
               '5ms 8UL 1DL 2/10 (maximum uplink)': 3}  %}
{{-   _[cell.tdd_ul_dl_config] }}
{%- endmacro -%}

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
{#- handover_config emits handover configuration for specified cell #}
{%- macro handover_config(cell_ref)  %}
          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 #}
            {
{%-           if cell2.cell_type == 'lte' %}
              rat:        "eutra",
              cell_id:    {{ cfg('enb_id') }}{{ cell2.cell_id.removeprefix('0x') }}, // -> {{ cell2_ref }}
              n_id_cell:  {{ cell2.pci }},
              dl_earfcn:  {{ cell2.dl_earfcn }},
              tac:        {{ cell2.tac }},
{%-           elif cell2.cell_type == 'nr' %}
              rat:        "nr",
              cell_id:    {{ cell2.cell_id }},  // -> {{ cell2_ref }}
{%-           else  %}
{%-             do bug('unreachable')   %}
{%-           endif %}
            },
{%-         endif %}
{%-       endfor %}

            // Inter-ENB HO
{#- 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 #}
{%-       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 %}

          ],
{%- endmacro %}


Kirill Smelkov's avatar
.  
Kirill Smelkov committed
95
{#- start of the config -#}
96
{
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
97
  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
98 99 100 101 102 103
{%- if slapparameter_dict.get('log_phy_debug', False) -%}
    phy.level=debug
{%- else -%}
    phy.level=info
{%- endif -%}
    ,file.rotate=1G,file.path=/dev/null",
104 105
  log_filename: "{{ directory['log'] }}/enb.log",

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
106
{# instantiate radio units #}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
107
{{ slaplte.ru_config(iru_dict, slapparameter_dict) }}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
108

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
109
  {%- if slapparameter_dict.get('websocket_password', '') %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
110
  com_addr: "[{{ gtp_addr_v6 }}]:{{ slap_configuration['configuration.com_ws_port'] }}",
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
111 112 113 114
  com_auth: {
    password: "{{ slapparameter_dict['websocket_password'] }}",
  },
  {%- else %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
115
  com_addr: "{{ slap_configuration['configuration.com_addr'] }}:{{ slap_configuration['configuration.com_ws_port'] }}",
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
116
  {%- endif %}
117

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
118 119
{%  if do_lte %}
  // LTE core network + XXX X2 peers
120
  mme_list: [
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
121
{%-   for _, mme in slapparameter_dict.get('mme_list',
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
122 123
                        {'1':{'mme_addr': slap_configuration['configuration.mme_addr']}})
                        | dictsort %}
124
    {
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
125
      mme_addr: "{{ mme['mme_addr'] }}",
126
    },
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
127
{%-   endfor %}
128
  ],
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
129
{%- endif %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
130

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
131 132
{%  if do_nr %}
  // NR core network + XXX Xn pers
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
133
  afm_list: [
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
134
{%-   for _, afm in slapparameter_dict.get('afm_list',
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
135 136
                        {'1':{'afm_addr': slap_configuration['configuration.amf_addr']}})
                        | dictsort %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
137 138 139
    {
      afm_addr: "{{ afm['afm_addr'] }}",
    },
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
140
{%-   endfor %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
141
  ],
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
142
{%- endif %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
143

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
144 145
{#- 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
146
          depending on whether LTE and/or NR cells are there add X2 and/or Xn peers #}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
147
{# XXX move ^^^ ? #}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
148 149 150 151 152 153 154 155 156
{% 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', '') %}
157 158 159 160 161
{%   if slapparameter_dict.get('use_ipv4', False) %}
  gtp_addr: "{{ gtp_addr_v4 }}",
{%   else %}
  gtp_addr: "{{ gtp_addr_v6 }}",
{%   endif %}
162
{% else %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
163
  gtp_addr: "{{ slap_configuration['configuration.gtp_addr'] }}",
164
{% endif %}
165

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
166
{%- if do_lte %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
167
  enb_id: {{ cfg('enb_id') }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
168 169
{%- endif %}
{%- if do_nr %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
170 171 172
  gnb_id: {{ cfg('gnb_id') }},
  gnb_id_bits: {{ cfg('gnb_id_bits') }},
  en_dc_support: true,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
173
{%- endif %}
174

175
  // LTE cells
176
  cell_list: [
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
177
{%- for i, (cell_ref, icell) in enumerate(icell_dict|dictsort) %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
178 179 180 181 182
{%-   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
183

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
184
        // {{ cell_ref }}  ({{ ru_ref }})
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
185
        {
186 187 188 189 190 191 192 193
          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
194
          ul_earfcn:    {{ cell.ul_earfcn }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
195 196 197
          root_sequence_index: {{ cell.get('root_sequence_index',
                                    slapparameter_dict.get('root_sequence_index',
                                      204 + i)) }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
198

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
199
          // Handover
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
200
{{- handover_config(cell_ref) }}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
201

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
202
          // Carrier Aggregation: LTE + LTE
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
203
          scell_list: [
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
204
{%-       for cell2_ref, icell2 in icell_dict|dictsort %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
205
{%-         set cell2 = icell2['_']                   %}
206
{%-         if cell2_ref != cell_ref  and  cell2.cell_type == 'lte' %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
207
            {
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
208
              cell_id: {{ cell2.cell_id }},  // + {{ cell2_ref }}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
209 210 211 212
              cross_carrier_scheduling: false,
            },
{%-         endif %}
{%-       endfor %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
213 214
          ],

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
215
{%-       if do_nr  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
216
          // Carrier Aggregation: LTE + NR
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
217 218 219 220 221 222 223 224 225 226 227 228
          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  %}
          ],
{%-       endif %}

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
229

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
230
          // tune LTE parameters for the cell
231
{%-       set tdd = (cell.rf_mode == 'tdd') %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
232
{%-       if tdd %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
233 234 235 236 237
          uldl_config: {{
              {'[Configuration 2] 5ms 2UL 6DL (default)':        2,
               '[Configuration 6] 5ms 5UL 3DL (maximum uplink)': 6}
              [cell.tdd_ul_dl_config]
          }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
238
          sp_config: 7,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
239 240
{%-       endif %}

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
241 242 243 244 245 246
{%-       set n_rb_dl = {'1.4 MHz':  6,
                         '3 MHz':   15,
                         '5 MHz':   25,
                         '10 MHz':  50,
                         '15 MHz':  75,
                         '20 MHz': 100} [cell.bandwidth]  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
247
          n_rb_dl: {{ n_rb_dl }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
248
          si_coderate: {{ 0.30  if n_rb_dl == 6  else 0.20 }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
249 250

          pdsch_dedicated: {
251
            p_a: {{ {4: -6, 2: -3}.get(ru.n_antenna_dl, 0) }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
252
            p_b: -1,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
253 254
          },

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
255
          pdcch_format:       {{  1  if n_rb_dl == 6  else 2 }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
256
          prach_config_index: {{ 15  if n_rb_dl == 6  else 4 }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
257
          initial_cqi:        {{  5  if n_rb_dl == 6  else 3 }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
258

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
259 260 261
          pucch_dedicated: {
            n1_pucch_sr_count: 11,
            cqi_pucch_n_rb: 1,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
262
            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
263
            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
264
{%-         if tdd  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
265
            tdd_ack_nack_feedback_mode: "multiplexing", /* TDD only */
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
266
{%-         endif %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
267 268
          },

269
{%-       if ru.n_antenna_dl >= 2  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
270 271
          m_ri: 8,
          transmission_mode: 3,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
272 273
{%-       endif %}

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
274
          srs_dedicated: {
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
275
{%-       if n_rb_dl == 6  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
276 277
            srs_bandwidth_config: 7,
            srs_bandwidth: 1,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
278
{%-       elif n_rb_dl == 15  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
279 280
            srs_bandwidth_config: 6,
            srs_bandwidth: 1,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
281
{%-       elif n_rb_dl == 25  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
282 283
            srs_bandwidth_config: 3,
            srs_bandwidth: 1,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
284
{%-       elif n_rb_dl == 50  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
285 286
            srs_bandwidth_config: 2,
            srs_bandwidth: 2,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
287
{%-       elif n_rb_dl == 75  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
288 289 290 291 292 293 294 295 296 297
            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
298

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
299
{#- XXX do we want to differentiate whether it is ORS or Amarisoft SDR board ? #}
300
{%-       if ru.ru_type == 'sdr'   %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
301
          manual_ref_signal_power: true,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
302
{%-       endif %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
303

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
304 305 306 307 308 309 310 311
          drb_config: "{{ cell_ref }}-drb.cfg",

          sib_sched_list: [
            {
              filename: "{{ cell_ref }}-sib23.asn",
              si_periodicity: 16,
            },
          ],
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
312 313 314
        },
{%-   endif %}
{%- endfor %}
Joanne Hugé's avatar
Joanne Hugé committed
315 316 317
  ],

  cell_default: {
318
    plmn_list: [
319 320 321 322 323 324 325 326 327
{%- 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
328
      attach_without_pdn: {{ str(slapparameter_dict['plmn_list'][k].get('attach_without_pdn', false)).lower() }},
329 330 331 332 333
      }
{%- endfor -%}
{% else %}
      "00101",
{% endif %}
334 335 336 337
    ],
    cyclic_prefix: "normal",

    phich_duration: "normal",
338 339 340 341 342 343 344
    phich_resource: "1",

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

346
    si_pdcch_format: 2,
347

348
    n_symb_cch: 0,
349

350
    prach_freq_offset: -1,
351 352 353 354 355 356 357

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

358
    pusch_hopping_offset: -1,
359 360 361 362 363 364 365

    pusch_msg3_mcs: 0,


    dl_256qam: true,
    ul_64qam: true,

366
    sr_period: 20,
367

368
    cqi_period: 40,
369 370 371


    mac_config: {
372 373
       ul_max_harq_tx: 5,
       dl_max_harq_tx: 5,
374 375
    },

376
    pusch_max_its: 6,
377 378 379

    dpc: true,
    dpc_pusch_snr_target: 25,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
380
    dpc_pucch_snr_target: 25,
381 382 383 384

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

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
385
    // XXX -> cell ?
386
    inactivity_timer: {{ slapparameter_dict.get('inactivity_timer', slap_configuration['configuration.default_lte_inactivity_timer']) }},
387 388 389 390 391 392 393 394 395 396 397 398 399 400 401

    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
402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418

  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
419
  },
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
420

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
421
  // NR cells
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
422 423
  nr_cell_list: [
{%- for i, (cell_ref, icell) in enumerate(icell_dict|dictsort) %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
424 425 426 427 428
{%-   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
429

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
430
        // {{ cell_ref }}  ({{ ru_ref }})
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
431
        {
432 433 434
          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
435

436 437 438 439
          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
440
          ul_nr_arfcn:  {{ cell.ul_nr_arfcn }},
441
          bandwidth:    {{ cell.bandwidth }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
442

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
443
          subcarrier_spacing: {{ 30  if cell.rf_mode == 'tdd'  else 15 }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
444
          ssb_nr_arfcn:   {{ cell.ssb_nr_arfcn }},
445
          ssb_pos_bitmap: {{ cell.ssb_pos_bitmap }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
446

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
447 448 449
          root_sequence_index: 1,   // XXX adjust from cfg('root_sequence_index') XXX place


Kirill Smelkov's avatar
.  
Kirill Smelkov committed
450
          // Handover
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
451
{{- handover_config(cell_ref) }}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
452

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474
          // 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
475
{%-           endfor %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
476 477
          ],
{%-       endif %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
478

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
479
        // tune NR parameters for the cell  XXX -> sdr/ors ? (see lte ^^^)
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
480 481 482
        {%- if slapparameter_dict.get('rrh', 'ORS') == "ORS" %}
            manual_ref_signal_power: true,
        {%- if 'XXX_one_watt' == "True" %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
483
            ss_pbch_block_power: {{ ru.tx_gain - 54 }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
484
        {%- else %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
485
            ss_pbch_block_power: {{ ru.tx_gain - 35 }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
486 487 488
        {%- endif -%}
        {%- endif %}

489
{%-       set tdd = (cell.rf_mode == 'tdd') %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
490 491 492 493 494 495
{%-       set tdd_config =
              {'5ms 2UL 7DL 4/6 (default)':         1,
               '2.5ms 1UL 3DL 2/10':                2,
               '5ms 8UL 1DL 2/10 (maximum uplink)': 3}
              [cell.tdd_ul_dl_config]
              if tdd else None  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527

{%        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
528

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
529
        },
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
530

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
531 532 533
{%-   endif %}
{%- endfor %}
  ],
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
534

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
535
{# XXX restore
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
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 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612
  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
613
      prach_config_index: 160,      // XXX TDD only & TDD_CONFIG != 4
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
614 615
      msg1_subcarrier_spacing: 30,
      msg1_fdm: 1,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
616
{% if ru.ru_type == 'sunwave' %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
617 618 619 620 621 622 623 624
      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
625
      ra_response_window: {{ 20 if tdd else 10 }},
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
626 627 628 629 630 631
      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
632
{% if ru.ru_type == 'sunwave' %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
633 634 635 636 637 638 639
      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
640
{% if ru.ru_type == 'sunwave' %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669
        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
670
{% if ru.ru_type == 'sunwave' %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
671 672 673
      k0: 0,
      k1: [ 8, 7, 7, 6, 5, 4, 12, 11 ],
{% elif tdd_config == 3 %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
674
      k1: [4, 11],
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
675 676 677 678 679 680 681 682 683
{% 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
684
{%- if ru.n_antenna_dl == 1     %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
685 686 687 688
          n_ports: 1,
          frequency_domain_allocation: "row2",
          bitmap: "100000000000",
          cdm_type: "no_cdm",
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
689
{%- elif ru.n_antenna_dl == 2   %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
690 691 692 693
          n_ports: 2,
          frequency_domain_allocation: "other",
          bitmap: "100000",
          cdm_type: "fd_cdm2",
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
694
{%- elif ru.n_antenna_dl == 4   %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
695 696 697 698
          n_ports: 4,
          frequency_domain_allocation: "row4",
          bitmap: "100",
          cdm_type: "fd_cdm2",
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
699
{%- elif ru.n_antenna_dl == 8   %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
700 701 702 703
          n_ports: 8,
          frequency_domain_allocation: "other",
          bitmap: "110011",
          cdm_type: "fd_cdm2",
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
704 705 706
{%- else  %}
{%-  do error(icell, "unsupported number of DL antennas")   %}
{%- endif %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
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 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862
          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
863
{%- if ru.n_antenna_dl > 1  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
864 865 866
          codebook_config: {
            codebook_type: "type1",
            sub_type: "typeI_SinglePanel",
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
867 868
{%-   if ru.n_antenna_dl == 2     %}
{%-   elif ru.n_antenna_dl == 4   %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
869 870 871
            n1: 2,
            n2: 1,
            codebook_mode: 1,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
872
{%-   elif ru.n_antenna_dl == 8   %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
873 874 875
            n1: 4,
            n2: 1,
            codebook_mode: 1,
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
876
{%-   endif                       %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
877
          },
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
878
{%- endif   %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911
          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
912
{% if ru.ru_type == 'sunwave' %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
913 914 915
      k2: 4,
      msg3_k2: 7,
{% elif tdd_config == 3 %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
916
      k2: [11, 12, 4, 5, 6, 7, 7, 8],
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 936 937 938 939 940
      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
941

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

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962
    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
963
  },
Kirill Smelkov's avatar
Kirill Smelkov committed
964
#}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
965
}