Active_gNBs = ( "gNB-Eurecom-5GNRBox");
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity = "none";

gNBs =
(
 {
    ////////// Identification parameters:
    gNB_ID    =  0xe00;

    cell_type =  "CELL_MACRO_GNB";

    gNB_name  =  "gNB-Eurecom-5GNRBox";

    // Tracking area code, 0x0000 and 0xfffe are reserved values
    tracking_area_code  =  1;

    plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;});	 

    tr_s_preference     = "local_mac"

    ////////// Physical parameters:

    component_carriers = (
      {
      node_function                                                 = "3GPP_gNODEB";
      node_timing                                                   = "synch_to_ext_device";
      node_synch_ref                                                = 0;
      frame_type                                                    = "TDD";
      DL_prefix_type                                                = "NORMAL";
      UL_prefix_type                                                = "NORMAL";
      eutra_band                                                    = 78;
      downlink_frequency                                            = 3510000000L;
      uplink_frequency_offset                                       = -120000000;
      Nid_cell                                                      = 0;
      N_RB_DL                                                       = 106;
      nb_antenna_ports                                              = 1;
      nb_antennas_tx                                                = 1;
      nb_antennas_rx                                                = 1;
      tx_gain                                                       = 90;
      rx_gain                                                       = 125;
      MIB_subCarrierSpacingCommon                                   = 30;
      MIB_ssb_SubcarrierOffset                                      = 0;
      MIB_dmrs_TypeA_Position                                       = 2;
      pdcch_ConfigSIB1                                              = 0;
      SIB1_frequencyOffsetSSB                                       = "khz5";
      SIB1_ssb_PeriodicityServingCell                               = 5;
      SIB1_ss_PBCH_BlockPower                                       = -60;
      absoluteFrequencySSB                                          = 0;
      DL_FreqBandIndicatorNR                                        = 15;
      DL_absoluteFrequencyPointA                                    = 15;
      DL_offsetToCarrier                                            = 15;
      DL_SCS_SubcarrierSpacing                                      = "kHz30";
      DL_SCS_SpecificCarrier_k0                                     = 0;
      DL_carrierBandwidth                                           = 15;
      DL_locationAndBandwidth                                       = 15;
      DL_BWP_SubcarrierSpacing                                      = "kHz30";
      DL_BWP_prefix_type                                            = "NORMAL";
      UL_FreqBandIndicatorNR                                        = 15;
      UL_absoluteFrequencyPointA                                    = 13;
      UL_additionalSpectrumEmission                                 = 3;
      UL_p_Max                                                      = -1;
      UL_frequencyShift7p5khz                                       = "TRUE";
      UL_offsetToCarrier                                            = 10;
      UL_SCS_SubcarrierSpacing                                      = "kHz30";
      UL_SCS_SpecificCarrier_k0                                     = 0;
      UL_carrierBandwidth                                           = 15;
      UL_locationAndBandwidth                                       = 15;
      UL_BWP_SubcarrierSpacing                                      = "kHz30";
      UL_BWP_prefix_type                                            = "NORMAL";
      UL_timeAlignmentTimerCommon                                   = "infinity";
      ServingCellConfigCommon_n_TimingAdvanceOffset                 = "n0"
      ServingCellConfigCommon_ssb_PositionsInBurst_PR               = "shortBitmap";
      ServingCellConfigCommon_ssb_periodicityServingCell            = 10;
      ServingCellConfigCommon_dmrs_TypeA_Position                   = 2;
      NIA_SubcarrierSpacing                                         = "kHz15"; 
      ServingCellConfigCommon_ss_PBCH_BlockPower                    = -60;
      referenceSubcarrierSpacing                                    = "kHz15";
      dl_UL_TransmissionPeriodicity                                 = "ms0p5";
      nrofDownlinkSlots                                             = 10;
      nrofDownlinkSymbols                                           = 10;
      nrofUplinkSlots                                               = 10;
      nrofUplinkSymbols                                             = 10;
      rach_totalNumberOfRA_Preambles                                = 63;
      rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice         = "oneEighth";
      rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth      = 4;
      rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth      = 8;
      rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf        = 16;
      rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one            = 24;
      rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two            = 32;
      rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_four           = 8;
      rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_eight          = 4;
      rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_sixteen        = 2;
      rach_groupBconfigured                                         = "ENABLE";
      rach_ra_Msg3SizeGroupA                                        = 56;
      rach_messagePowerOffsetGroupB                                 = "dB0";
      rach_numberOfRA_PreamblesGroupA                               = 32;
      rach_ra_ContentionResolutionTimer                             = 8;
      rsrp_ThresholdSSB                                             = 64;
      rsrp_ThresholdSSB_SUL                                         = 64;
      prach_RootSequenceIndex_choice                                = "l839";
      prach_RootSequenceIndex_l839                                  = 0;
      prach_RootSequenceIndex_l139                                  = 0;
      prach_msg1_SubcarrierSpacing                                  = "kHz30";
      restrictedSetConfig                                           = "unrestrictedSet";
      msg3_transformPrecoding                                       = "ENABLE";
      prach_ConfigurationIndex                                      = 10;
      prach_msg1_FDM                                                = "one";
      prach_msg1_FrequencyStart                                     = 10;
      zeroCorrelationZoneConfig                                     = 10;
      preambleReceivedTargetPower                                   = -150;
      preambleTransMax                                              = 6;
      powerRampingStep                                              = "dB0";
      ra_ResponseWindow                                             = 8;
      groupHoppingEnabledTransformPrecoding                         = "ENABLE";
      msg3_DeltaPreamble                                            = 0;
      p0_NominalWithGrant                                           = 0;
      PUSCH_TimeDomainResourceAllocation_k2                         = 0;
      PUSCH_TimeDomainResourceAllocation_mappingType                = "typeA";
      PUSCH_TimeDomainResourceAllocation_startSymbolAndLength       = 0;
      pucch_ResourceCommon                                          = 0;
      pucch_GroupHopping                                            = "neither";
      hoppingId                                                     = 0;
      p0_nominal                                                    = -30;
      PDSCH_TimeDomainResourceAllocation_k0                         = 2;
      PDSCH_TimeDomainResourceAllocation_mappingType                = "typeA";
      PDSCH_TimeDomainResourceAllocation_startSymbolAndLength       = 0;
      rateMatchPatternId                                            = 0;
      RateMatchPattern_patternType                                  = "bitmaps";
      symbolsInResourceBlock                                        = "oneSlot";
      periodicityAndPattern                                         = 2;
      RateMatchPattern_controlResourceSet                           = 5;
      RateMatchPattern_subcarrierSpacing                            = "kHz30";
      RateMatchPattern_mode                                         = "dynamic";
      controlResourceSetZero                                        = 0;
      searchSpaceZero                                               = 0;
      searchSpaceSIB1                                               = 10;
      searchSpaceOtherSystemInformation                             = 10;
      pagingSearchSpace                                             = 10;
      ra_SearchSpace                                                = 10;
      PDCCH_common_controlResourceSetId                             = 5;
      PDCCH_common_ControlResourceSet_duration                      = 2;
      PDCCH_cce_REG_MappingType                                     = "nonInterleaved";
      PDCCH_reg_BundleSize                                          = 3;
      PDCCH_interleaverSize                                         = 3;
      PDCCH_shiftIndex                                              = 10;  
      PDCCH_precoderGranularity                                     = "sameAsREG-bundle";
      PDCCH_TCI_StateId                                             = 32;
      tci_PresentInDCI                                              = "ENABLE";
      PDCCH_DMRS_ScramblingID                                       = 0;
      SearchSpaceId                                                 = 10;
      commonSearchSpaces_controlResourceSetId                       = 5;
      SearchSpace_monitoringSlotPeriodicityAndOffset_choice         = "sl1";
      SearchSpace_monitoringSlotPeriodicityAndOffset_value          = 0;
      SearchSpace_duration                                          = 2;
      SearchSpace_nrofCandidates_aggregationLevel1                  = 0;
      SearchSpace_nrofCandidates_aggregationLevel2                  = 0;
      SearchSpace_nrofCandidates_aggregationLevel4                  = 0;
      SearchSpace_nrofCandidates_aggregationLevel8                  = 0;
      SearchSpace_nrofCandidates_aggregationLevel16                 = 0;
      SearchSpace_searchSpaceType                                   = "common";
      Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel1     = 1;
      Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel2     = 1;
      Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel4     = 1;
      Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel8     = 1;
      Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel16    = 1; 
      Common_dci_Format2_3_monitoringPeriodicity                    = 1;
      Common_dci_Format2_3_nrofPDCCH_Candidates                     = 1;
      ue_Specific__dci_Formats                                      = "formats0-0-And-1-0";
      RateMatchPatternLTE_CRS_carrierFreqDL                         = 6;
      RateMatchPatternLTE_CRS_carrierBandwidthDL                    = 6;
      RateMatchPatternLTE_CRS_nrofCRS_Ports                         = 1;
      RateMatchPatternLTE_CRS_v_Shift                               = 0;
      RateMatchPatternLTE_CRS_radioframeAllocationPeriod            = 1;
      RateMatchPatternLTE_CRS_radioframeAllocationOffset            = 0;
      RateMatchPatternLTE_CRS_subframeAllocation_choice             = "oneFrame";
      }
    );


    srb1_parameters :
    {
        # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
        timer_poll_retransmit    = 80;

        # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
        timer_reordering         = 35;

        # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
        timer_status_prohibit    = 0;

        # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
        poll_pdu                 =  4;

        # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
        poll_byte                =  99999;

        # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
        max_retx_threshold       =  4;
    }

    # ------- SCTP definitions
    SCTP :
    {
        # Number of streams to use in input/output
        SCTP_INSTREAMS  = 2;
        SCTP_OUTSTREAMS = 2;
    };


    ////////// MME parameters:
    mme_ip_address      = ( { ipv4       = "192.168.12.26";
                              ipv6       = "192:168:30::17";
                              active     = "yes";
                              preference = "ipv4";
                            }
                          );

    NETWORK_INTERFACES :
    {

        GNB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
        GNB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.111/24";
        GNB_INTERFACE_NAME_FOR_S1U               = "eth0";
        GNB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.111/24";
        GNB_PORT_FOR_S1U                         = 2152; # Spec 2152
    };
  }
);

MACRLCs = (
	{
	num_cc = 1;
	tr_s_preference = "local_L1";
	tr_n_preference = "local_RRC";
        }  
);

L1s = (
    	{
	num_cc = 1;
	tr_n_preference = "local_mac";
        }  
);

RUs = (
    {		  
       local_rf       = "yes"
         nb_tx          = 1
         nb_rx          = 1
         att_tx         = 0
         att_rx         = 0;
         bands          = [7];
         max_pdschReferenceSignalPower = -27;
         max_rxgain                    = 114;
         eNB_instances  = [0];
	 sdr_addrs = "addr=192.168.30.2";

    }
);  

THREAD_STRUCT = (
  {
    #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
    parallel_config    = "PARALLEL_SINGLE_THREAD";
    #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
    worker_config      = "WORKER_DISABLE";
  }
);

NETWORK_CONTROLLER :
{
    FLEXRAN_ENABLED        = "no";
    FLEXRAN_INTERFACE_NAME = "lo";
    FLEXRAN_IPV4_ADDRESS   = "127.0.0.1";
    FLEXRAN_PORT           = 2210;
    FLEXRAN_CACHE          = "/mnt/oai_agent_cache";
    FLEXRAN_AWAIT_RECONF   = "no";
};

     log_config :
     {
       global_log_level                      ="info";
       global_log_verbosity                  ="medium";
       hw_log_level                          ="info";
       hw_log_verbosity                      ="medium";
       phy_log_level                         ="info";
       phy_log_verbosity                     ="medium";
       mac_log_level                         ="info";
       mac_log_verbosity                     ="high";
       rlc_log_level                         ="info";
       rlc_log_verbosity                     ="medium";
       pdcp_log_level                        ="info";
       pdcp_log_verbosity                    ="medium";
       rrc_log_level                         ="info";
       rrc_log_verbosity                     ="medium";
    };