#####################################################################
#                   srsUE configuration file
#####################################################################

[rf]
% if int(ue.tx_gain) > 0:
tx_gain = ${ue.tx_gain}
% endif
% if int(ue.rx_gain) > 0:
rx_gain = ${ue.rx_gain}
% endif

freq_offset = ${ue.freq_offset}

nof_antennas = ${ue.num_antennas}

device_name = ${ue.rf_dev_type}
device_args = ${ue.rf_dev_args},${ue.rf_dev_sync}

[rat.eutra]
% if int(ue.num_carriers) == 4:
dl_earfcn = 2850,3050,3250,3350
% elif int(ue.num_carriers) == 2:
dl_earfcn = 2850,3050
% else:
dl_earfcn = 2850
% endif
% if ue.get('dl_freq', -1) != -1:
dl_freq = ${ue.dl_freq}
% endif
% if ue.get('ul_freq', -1) != -1:
ul_freq = ${ue.ul_freq}
% endif

nof_carriers = ${ue.num_carriers}


[pcap]
enable = ${'mac' if ue.enable_pcap else 'none'}
mac_filename = ${ue.pcap_filename}
mac_nr_filename = /tmp/ue_mac_nr.pcap
nas_filename = /tmp/ue_nas.pcap


[log]
all_level = ${ue.log_all_level}
phy_lib_level = none
all_hex_limit = 32
filename = ${ue.log_filename}
file_max_size = -1
nas_level = ${ue.log_nas_level}


[usim]
mode = soft
algo = ${ue.auth_algo}
% if ue.opc is not None:
opc  = ${ue.opc}
% endif
k    = ${ue.ki}
imsi = ${ue.imsi}
imei = 353490069873319


[rrc]
% if "dl_qam256" in ue.features or "ul_qam64" in ue.features:
ue_category       = 8
release           = 13
ue_category_dl    = 14
ue_category_ul    = 5
% elif int(ue.num_carriers) > 1:
ue_category       = 7
release           = 10
% else:
#ue_category       = 4
#release           = 8
% endif


[phy]
% if ue.rf_dev_type == 'zmq':
nof_phy_threads     = 2
% endif
% if float(ue.force_ul_amplitude) > 0:
force_ul_amplitude = ${ue.force_ul_amplitude}
% endif


[sim]
airplane_t_on_ms  = ${ue.airplane_t_on_ms}
airplane_t_off_ms = ${ue.airplane_t_off_ms}


[general]
metrics_csv_enable  = true
metrics_csv_filename = ${ue.metrics_filename}

% if ue.rf_dev_type == 'zmq':
[stack]
have_tti_time_stats = false
% endif