/* 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: 40, /* 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: 160, /* 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
  },
}
