amarisoft_enb: Support zmq rf_driver
Change-Id: I958834d99584e33f632b839a0bd0acccc2379049
diff --git a/src/osmo_gsm_tester/amarisoft_enb.py b/src/osmo_gsm_tester/amarisoft_enb.py
index 2ef713f..e4f3d64 100644
--- a/src/osmo_gsm_tester/amarisoft_enb.py
+++ b/src/osmo_gsm_tester/amarisoft_enb.py
@@ -24,7 +24,7 @@
from . import enb
def rf_type_valid(rf_type_str):
- return rf_type_str in ('uhd')
+ return rf_type_str in ('uhd', 'zmq')
#reference: srsLTE.git srslte_symbol_sz()
def num_prb2symbol_sz(num_prb):
@@ -167,6 +167,38 @@
self._num_cells = int(values['enb'].get('num_cells', None))
assert self._num_cells
+ # We need to set some specific variables programatically here to match IP addresses:
+ if self._conf.get('rf_dev_type') == 'zmq':
+ base_srate = num_prb2base_srate(self.num_prb())
+ rf_dev_args = 'fail_on_disconnect=true' \
+ + ',tx_port0=tcp://' + self.addr() + ':2000' \
+ + ',tx_port1=tcp://' + self.addr() + ':2002' \
+ + ',rx_port0=tcp://' + self.ue.addr() + ':2001' \
+ + ',rx_port1=tcp://' + self.ue.addr() + ':2003' \
+ + ',tx_freq=2630e6,rx_freq=2510e6,tx_freq2=2650e6,rx_freq2=2530e6' \
+ + ',id=enb,base_srate=' + str(base_srate)
+ config.overlay(values, dict(enb=dict(sample_rate = base_srate / (1000*1000),
+ rf_dev_args=rf_dev_args)))
+
+ # Set UHD frame size as a function of the cell bandwidth on B2XX
+ if self._conf.get('rf_dev_type') == 'UHD' and values['enb'].get('rf_dev_args', None) is not None:
+ if 'b200' in values['enb'].get('rf_dev_args'):
+ rf_dev_args = values['enb'].get('rf_dev_args', '')
+ rf_dev_args += ',' if rf_dev_args != '' and not rf_dev_args.endswith(',') else ''
+
+ if self._num_prb < 25:
+ rf_dev_args += 'send_frame_size=512,recv_frame_size=512'
+ elif self._num_prb == 25:
+ rf_dev_args += 'send_frame_size=1024,recv_frame_size=1024'
+ elif self._num_prb > 25:
+ rf_dev_args += 'num_recv_frames=64,num_send_frames=64'
+
+ if self._num_prb > 50:
+ # Reduce over the wire format to sc12
+ rf_dev_args += ',otw_format=sc12'
+
+ config.overlay(values, dict(enb=dict(rf_dev_args=rf_dev_args)))
+
logfile = self.log_file if self.setup_runs_locally() else self.remote_log_file
config.overlay(values, dict(enb=dict(log_filename=logfile)))
diff --git a/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl b/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl
index fab1649..532472a 100644
--- a/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl
+++ b/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl
@@ -10,6 +10,11 @@
},
%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
diff --git a/src/osmo_gsm_tester/templates/amarisoft_rf_driver.cfg.tmpl b/src/osmo_gsm_tester/templates/amarisoft_rf_driver.cfg.tmpl
index bbf9b47..466bc8f 100644
--- a/src/osmo_gsm_tester/templates/amarisoft_rf_driver.cfg.tmpl
+++ b/src/osmo_gsm_tester/templates/amarisoft_rf_driver.cfg.tmpl
@@ -1,18 +1,13 @@
-/* Parameters for b2x0 UHD device version 2018-10-18
- * Copyright (C) 2015-2018 Amarisoft
- */
rf_driver: {
name: "${enb.rf_dev_type}",
- sync: "none",
+ sync: "${'1' if enb.rf_dev_type == 'zmq' else 'none'}",
/* Use this for b2x0 devices. Bandwidth >= 10 Mhz */
args: "${enb.rf_dev_args}",
-
- /* Use this for bandwidth == 5 Mhz */
- //args: "send_frame_size=1024,recv_frame_size=1024",
-
- /* Use this for bandwidth < 5 Mhz */
- //args: "send_frame_size=512,recv_frame_size=512",
+% if enb.rf_dev_type == 'zmq':
+ dl_sample_bits: 16,
+ ul_sample_bits: 16,
+% endif
},
tx_gain: 89.0, /* TX gain (in dB) B2x0: 0 to 89.8 dB */