#####################################################################
#                   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}

% if "x300" in ue.rf_dev_args:
srate = 23.04e6
% endif

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