/* lteenb configuration file version 2018-10-18
 * Copyright (C) 2015-2018 Amarisoft
 */
{

%if enb.license_server_addr != '0.0.0.0':
  license_server: {
    server_addr: "${enb.license_server_addr}",
    name: "amarisoft",
  },
%endif

% if enb.rf_dev_type == 'zmq':
  /* Force sampling rate (if uncommented) */
  sample_rate: ${enb.sample_rate},
%endif

  /* Log filter: syntax: layer.field=value[,...]

     Possible layers are phy, mac, rlc, pdcp, rrc, nas, s1ap, x2ap, gtpu and
     all. The 'all' layer is used to address all the layers at the
     same time.

     field values:

     - 'level': the log level of each layer can be set to 'none',
     'error', 'info' or 'debug'. Use 'debug' to log all the messages.

     - 'max_size': set the maximum size of the hex dump. 0 means no
       hex dump. -1 means no limit.
  */
  log_options: "${enb.log_options}",
  log_filename: "${enb.log_filename}",

  /* Enable remote API and Web interface */
  com_addr: "${enb.addr}:9001",

  /* RF driver configuration */
  include "amarisoft_rf_driver.cfg",

  mme_list: [
    {
      s1ap_bind_addr: "${enb.addr}",
      /* address of MME for S1AP connection. Must be modified if the MME
         runs on a different host. */
      mme_addr: "${enb.mme_addr}",
    },
  ],
  /* GTP bind address (=address of the ethernet interface connected to
     the MME). Must be modified if the MME runs on a different host. */
  gtp_addr: "${enb.gtp_bind_addr}",

  /* high 20 bits of SIB1.cellIdentifier */
  enb_id: ${enb.id},

  /* list of cells */
  cell_list: [

%for cell in enb.cell_list:
  {
    dl_earfcn: ${cell.dl_earfcn},
    rf_port: ${cell.rf_port},
    cell_id: ${cell.cell_id},
    n_id_cell: ${cell.pci},
    tac: 0x0001,
    root_sequence_index: ${loop.index + 204}, /* PRACH root sequence index */

    ncell_list: [
%for ncell in enb.cell_list:
%if ncell.cell_id in cell.ncell_list:
      { n_id_cell: ${ncell.pci}, dl_earfcn: ${ncell.dl_earfcn}, cell_id: ${ncell.cell_id}, tac: 1 },
%endif
%endfor
    ],

    scell_list: [
%for scell_id in cell.scell_list:
      { cell_id: ${scell_id}, cross_carrier_scheduling: false, scheduling_cell_id: ${cell.cell_id}, ul_allowed: true},
%endfor
    ],
  },
%endfor
  ], /* cell_list */

  /* default cell parameters */
  cell_default: {
    /* Broadcasted PLMN identities */
    plmn_list: [
      "${enb.mcc}${enb.mnc}",
    ],

% if int(enb.get('transmission_mode')) == 1:
    n_antenna_dl: 1, /* number of DL antennas */
    n_antenna_ul: 1, /* number of UL antennas */
% else:
    n_antenna_dl: 2, /* number of DL antennas */
    n_antenna_ul: 2, /* number of UL antennas */
% endif

    n_rb_dl: ${enb.num_prb}, /* Bandwidth: 25: 5 MHz, 50: 10 MHz, 75: 15 MHz, 100: 20 MHz */
    cyclic_prefix: "normal",

    phich_duration: "normal",
    phich_resource: "1", /* ratio of NG */

    /* System Information Block type 1 */
    sib1: "amarisoft_sib1.asn",

    /* other SIBs, in same order as the scheduling list in SIB 1 */
    sib_sched_list: [ "amarisoft_sib23.asn" ],

    si_coderate: 0.30,   /* maximum code rate for SI/RA/P-RNTI messages */
    si_pdcch_format: 2, /* 2 or 3. Log2 of the number of CCEs for PDCCH
                           for SI/RA/P-RNTI */

    n_symb_cch: 0, /* number of symbols for CCH (0 = auto) */

    /* PDSCH dedicated config (currently same for all UEs) */
    pdsch_dedicated: {
      p_a: 0,
    },

    /* If defined, force for number of CCEs for UE specific PDCCH to
       2^pdcch_format. Otherwise it is computed from the reported
       CQI. Range: 0 to 3. */
    pdcch_format: 1,

    /* if defined, force the PDSCH MCS for all UEs. Otherwise it is
       computed from the reported CQI */
    /* pdsch_mcs: 12, */

    /* PUSCH dedicated config (currently same for all UEs) */
    pusch_dedicated: {
      beta_offset_ack_index: 9,
      beta_offset_ri_index: 6,
      beta_offset_cqi_index: 6,
    },

    /* MCS for Msg3 (=CCCH RRC Connection Request) */
    pusch_msg3_mcs: 0,

    /* this CQI value is assumed when none is received from the UE */
    initial_cqi: 5,

    /* if defined, force the PUSCH MCS for all UEs. Otherwise it is
       computed from the last received SRS/PUSCH. */
    //  pusch_mcs: 18,

    transmission_mode: ${enb.transmission_mode},

    /* Scheduling request period (ms). Must be >= 40 for HD-FDD */
    sr_period: 20,

    /* CQI report config */
    cqi_period: 160, /* period (ms). Must be >= 32 for HD-FDD */

    /* RI reporting is done with a period of m_ri * cqi_period.
       m_ri = 0 (default) disables RI reporting. */
    % if int(enb.get('transmission_mode')) > 1:
      m_ri: 8,
    % endif

    pucch_dedicated: {
        /* ack/nack feedback mode when carrier aggregation is
           enabled. It can be "cs" (for at most two scells) or "pucch3"
           (used in all cases if more than two cells).  */
        ack_nack_feedback_mode_ca: "cs",

        /* TDD ack/nack feedback mode when a rel 10 UE is detected. It
           can be "bundling", "multiplexing", "cs" or "pucch3". By
           default is it the same as tdd_ack_nack_feedback_mode. */
        // tdd_ack_nack_feedback_mode_r10: "cs",

        /* number of PUCCH 1b CS resources. It determines
           the maximum number of UEs that can be scheduled in one TTI
           using carrier aggregation with PUCCH 1b CS ack/nack feedback. */
        n1_pucch_an_cs_count: 1,

        /* number of resource blocks for PUCCH 3. It determines
           the maximum number of UEs that can be scheduled in one TTI
           using carrier aggregation with PUCCH 3 ack/nack feedback. */
        n3_pucch_an_n_rb: 0,
    },

    /* SRS dedicated config. All UEs share these
       parameters. srs_config_index and freq_domain_position are
       allocated for each UE) */
    srs_dedicated: {
      srs_period: 80, /* period (ms). Must be >= 40 for HD-FDD */
      srs_bandwidth: 1,
      srs_hopping_bandwidth: 0,
    },

    /* MAC configuration (same for all UEs) */
    mac_config: {
       ul_max_harq_tx: 5, /* max number of HARQ transmissions for uplink */
       dl_max_harq_tx: 5, /* max number of HARQ transmissions for downlink */
    },

    /* CPU load limitation */
    pusch_max_its: 6, /* max number of turbo decoder iterations */

    /* dynamic power control */
    dpc: true,
    dpc_pusch_snr_target: 15,
    dpc_pucch_snr_target: 10,

    /* RRC/UP ciphering algorithm preference. EEA0 is always the last. */
    cipher_algo_pref: [],
    /* RRC integrity algorithm preference. EIA0 is always the last. */
    integ_algo_pref: [2, 1],

    /* (in ms) send RRC connection release after this time of network
       inactivity */
    inactivity_timer: 10000,

    /* SRB configuration */
    srb_config: [
      {
        id: 1,
        maxRetxThreshold: 32,
        t_Reordering: 45,
        t_PollRetransmit: 60,
      },
      {
        id: 2 ,
        maxRetxThreshold: 32,
        t_Reordering: 45,
        t_PollRetransmit: 60,
      }
    ],

    /* DRB configuration */
    drb_config: "amarisoft_drb.cfg",

% if enb.enable_measurements:
    /* measurement configuration */
    meas_config_desc: {
        a1_report_type: "${enb.a1_report_type}",
        a1_${enb.a1_report_type}: ${enb.a1_report_value},
        a1_hysteresis: ${enb.a1_hysteresis},
        a1_time_to_trigger: ${enb.a1_time_to_trigger},
        a2_report_type: "${enb.a2_report_type}",
        a2_${enb.a2_report_type}: ${enb.a2_report_value},
        a2_hysteresis: ${enb.a2_hysteresis},
        a2_time_to_trigger: ${enb.a2_time_to_trigger},
        a3_report_type: "${enb.a3_report_type}",
        a3_offset: ${enb.a3_report_value},
        a3_hysteresis: ${enb.a3_hysteresis},
        a3_time_to_trigger: ${enb.a3_time_to_trigger},
    },

    /* measurement gap configuration */
    meas_gap_config: "gp0",

    /* if true, initiate a handover when a suitable measurement report
       is received */
    ho_from_meas: true,
% endif
  },
}
