<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/17842">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  srs_andre: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">enb: Add cell_list attribute<br><br>It allows configuring each cell_list up to a maximum of 'num_cells'.<br><br>Change-Id: I4fd30a3e37789b76bfaddc2beba1815154daab7f<br>---<br>M src/osmo_gsm_tester/obj/enb.py<br>M src/osmo_gsm_tester/obj/enb_amarisoft.py<br>M src/osmo_gsm_tester/obj/enb_srs.py<br>M src/osmo_gsm_tester/resource.py<br>M src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl<br>M sysmocom/defaults.conf<br>6 files changed, 41 insertions(+), 29 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo_gsm_tester/obj/enb.py b/src/osmo_gsm_tester/obj/enb.py</span><br><span>index d1f8687..340ea3a 100644</span><br><span>--- a/src/osmo_gsm_tester/obj/enb.py</span><br><span>+++ b/src/osmo_gsm_tester/obj/enb.py</span><br><span>@@ -38,6 +38,7 @@</span><br><span>         self.set_name('%s_%s' % (name, self._addr))</span><br><span>         self._txmode = 0</span><br><span>         self._num_prb = 0</span><br><span style="color: hsl(120, 100%, 40%);">+        self._num_cells = None</span><br><span>         self._epc = None</span><br><span> </span><br><span>     def configure(self, config_specifics_li):</span><br><span>@@ -56,6 +57,25 @@</span><br><span>         assert self._epc is not None</span><br><span>         config.overlay(values, dict(enb={ 'mme_addr': self._epc.addr() }))</span><br><span>         config.overlay(values, dict(enb={ 'gtp_bind_addr': self._gtp_bind_addr }))</span><br><span style="color: hsl(120, 100%, 40%);">+        self._num_cells = int(values['enb'].get('num_cells', None))</span><br><span style="color: hsl(120, 100%, 40%);">+        assert self._num_cells</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        # adjust cell_list to num_cells length:</span><br><span style="color: hsl(120, 100%, 40%);">+        len_cell_list = len(values['enb']['cell_list'])</span><br><span style="color: hsl(120, 100%, 40%);">+        if len_cell_list >= self._num_cells:</span><br><span style="color: hsl(120, 100%, 40%);">+            values['enb']['cell_list'] = values['enb']['cell_list'][:self._num_cells]</span><br><span style="color: hsl(120, 100%, 40%);">+        else:</span><br><span style="color: hsl(120, 100%, 40%);">+            raise log.Error('enb.cell_list items (%d) < enb.num_cells (%d) attribute!' % (len_cell_list, self._num_cells))</span><br><span style="color: hsl(120, 100%, 40%);">+        # adjust scell list (to only contain values available in cell_list):</span><br><span style="color: hsl(120, 100%, 40%);">+        cell_id_list = [c['cell_id'] for c in values['enb']['cell_list']]</span><br><span style="color: hsl(120, 100%, 40%);">+        for i in range(len(values['enb']['cell_list'])):</span><br><span style="color: hsl(120, 100%, 40%);">+            scell_list_old = values['enb']['cell_list'][i]['scell_list']</span><br><span style="color: hsl(120, 100%, 40%);">+            scell_list_new = []</span><br><span style="color: hsl(120, 100%, 40%);">+            for scell_id in scell_list_old:</span><br><span style="color: hsl(120, 100%, 40%);">+                if scell_id in cell_id_list:</span><br><span style="color: hsl(120, 100%, 40%);">+                    scell_list_new.append(scell_id)</span><br><span style="color: hsl(120, 100%, 40%);">+            values['enb']['cell_list'][i]['scell_list'] = scell_list_new</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         return values</span><br><span> </span><br><span>     def num_ports(self):</span><br><span>diff --git a/src/osmo_gsm_tester/obj/enb_amarisoft.py b/src/osmo_gsm_tester/obj/enb_amarisoft.py</span><br><span>index 1772173..996af19 100644</span><br><span>--- a/src/osmo_gsm_tester/obj/enb_amarisoft.py</span><br><span>+++ b/src/osmo_gsm_tester/obj/enb_amarisoft.py</span><br><span>@@ -165,8 +165,6 @@</span><br><span>             self.remote_log_file = remote_run_dir.child(AmarisoftENB.LOGFILE)</span><br><span> </span><br><span>         values = super().configure(['amarisoft', 'amarisoftenb'])</span><br><span style="color: hsl(0, 100%, 40%);">-        self._num_cells = int(values['enb'].get('num_cells', None))</span><br><span style="color: hsl(0, 100%, 40%);">-        assert self._num_cells</span><br><span> </span><br><span>         # Convert parsed boolean string to Python boolean:</span><br><span>         self.enable_measurements = util.str2bool(values['enb'].get('enable_measurements', 'false'))</span><br><span>diff --git a/src/osmo_gsm_tester/obj/enb_srs.py b/src/osmo_gsm_tester/obj/enb_srs.py</span><br><span>index 9364375..c9721d1 100644</span><br><span>--- a/src/osmo_gsm_tester/obj/enb_srs.py</span><br><span>+++ b/src/osmo_gsm_tester/obj/enb_srs.py</span><br><span>@@ -190,9 +190,6 @@</span><br><span> </span><br><span>         self._additional_args = values['enb'].get('additional_args', '').split()</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        self._num_cells = int(values['enb'].get('num_cells', None))</span><br><span style="color: hsl(0, 100%, 40%);">-        assert self._num_cells</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>         # We need to set some specific variables programatically here to match IP addresses:</span><br><span>         if self._conf.get('rf_dev_type') == 'zmq':</span><br><span>             base_srate = num_prb2base_srate(self.num_prb())</span><br><span>diff --git a/src/osmo_gsm_tester/resource.py b/src/osmo_gsm_tester/resource.py</span><br><span>index bcdbb94..efb7d5a 100644</span><br><span>--- a/src/osmo_gsm_tester/resource.py</span><br><span>+++ b/src/osmo_gsm_tester/resource.py</span><br><span>@@ -91,7 +91,6 @@</span><br><span>         'enb[].gtp_bind_addr': schema.IPV4,</span><br><span>         'enb[].num_prb': schema.UINT,</span><br><span>         'enb[].transmission_mode': schema.LTE_TRANSMISSION_MODE,</span><br><span style="color: hsl(0, 100%, 40%);">-        'enb[].num_cells': schema.UINT,</span><br><span>         'enb[].rf_dev_type': schema.STR,</span><br><span>         'enb[].rf_dev_args': schema.STR,</span><br><span>         'enb[].additional_args': schema.STR,</span><br><span>@@ -108,6 +107,10 @@</span><br><span>         'enb[].a3_report_value': schema.INT,</span><br><span>         'enb[].a3_hysteresis': schema.INT,</span><br><span>         'enb[].a3_time_to_trigger': schema.INT,</span><br><span style="color: hsl(120, 100%, 40%);">+        'enb[].num_cells': schema.UINT,</span><br><span style="color: hsl(120, 100%, 40%);">+        'enb[].cell_list[].cell_id': schema.UINT,</span><br><span style="color: hsl(120, 100%, 40%);">+        'enb[].cell_list[].scell_list[]': schema.UINT,</span><br><span style="color: hsl(120, 100%, 40%);">+        'enb[].cell_list[].dl_earfcn': schema.UINT,</span><br><span>         'arfcn[].arfcn': schema.INT,</span><br><span>         'arfcn[].band': schema.BAND,</span><br><span>         'modem[].type': schema.STR,</span><br><span>diff --git a/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl b/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl</span><br><span>index a56e58d..11704b6 100644</span><br><span>--- a/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl</span><br><span>+++ b/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl</span><br><span>@@ -55,36 +55,23 @@</span><br><span> </span><br><span>   /* list of cells */</span><br><span>   cell_list: [</span><br><span style="color: hsl(0, 100%, 40%);">-  {</span><br><span style="color: hsl(0, 100%, 40%);">-    // First cell</span><br><span style="color: hsl(0, 100%, 40%);">-    dl_earfcn: 2850,</span><br><span style="color: hsl(0, 100%, 40%);">-    rf_port: 0,</span><br><span style="color: hsl(0, 100%, 40%);">-    cell_id: 0x01,</span><br><span style="color: hsl(0, 100%, 40%);">-    n_id_cell: 1,</span><br><span style="color: hsl(0, 100%, 40%);">-    tac: 0x0001,</span><br><span style="color: hsl(0, 100%, 40%);">-    root_sequence_index: 204, /* PRACH root sequence index */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-% if enb.get('num_cells') == '2':</span><br><span style="color: hsl(0, 100%, 40%);">-    scell_list: [</span><br><span style="color: hsl(0, 100%, 40%);">-      { cell_id: 0x02, cross_carrier_scheduling: false, scheduling_cell_id: 0x01, ul_allowed: true},</span><br><span style="color: hsl(0, 100%, 40%);">-    ],</span><br><span style="color: hsl(0, 100%, 40%);">-% endif</span><br><span style="color: hsl(0, 100%, 40%);">-  },</span><br><span style="color: hsl(0, 100%, 40%);">-% if enb.get('num_cells') == '2':</span><br><span style="color: hsl(120, 100%, 40%);">+%for cell in enb.cell_list:</span><br><span>   {</span><br><span style="color: hsl(0, 100%, 40%);">-    // Second Cell</span><br><span style="color: hsl(0, 100%, 40%);">-    dl_earfcn: 3050,</span><br><span style="color: hsl(0, 100%, 40%);">-    rf_port: 1,</span><br><span style="color: hsl(0, 100%, 40%);">-    cell_id: 0x02,</span><br><span style="color: hsl(0, 100%, 40%);">-    n_id_cell: 2,</span><br><span style="color: hsl(120, 100%, 40%);">+    dl_earfcn: ${cell.dl_earfcn},</span><br><span style="color: hsl(120, 100%, 40%);">+    rf_port: ${loop.index},</span><br><span style="color: hsl(120, 100%, 40%);">+    cell_id: ${cell.cell_id},</span><br><span style="color: hsl(120, 100%, 40%);">+    n_id_cell: ${loop.index + 1},</span><br><span>     tac: 0x0001,</span><br><span style="color: hsl(0, 100%, 40%);">-    root_sequence_index: 205,</span><br><span style="color: hsl(120, 100%, 40%);">+    root_sequence_index: ${loop.index + 204}, /* PRACH root sequence index */</span><br><span> </span><br><span>     scell_list: [</span><br><span style="color: hsl(0, 100%, 40%);">-      { cell_id: 0x01, cross_carrier_scheduling: false, scheduling_cell_id: 0x02, ul_allowed: true},</span><br><span style="color: hsl(120, 100%, 40%);">+%for scell_id in cell.scell_list:</span><br><span style="color: hsl(120, 100%, 40%);">+      { cell_id: ${scell_id}, cross_carrier_scheduling: false, scheduling_cell_id: ${cell.cell_id}, ul_allowed: true},</span><br><span style="color: hsl(120, 100%, 40%);">+%endfor</span><br><span>     ],</span><br><span>   },</span><br><span style="color: hsl(0, 100%, 40%);">-% endif</span><br><span style="color: hsl(120, 100%, 40%);">+%endfor</span><br><span>   ], /* cell_list */</span><br><span> </span><br><span>   /* default cell parameters */</span><br><span>diff --git a/sysmocom/defaults.conf b/sysmocom/defaults.conf</span><br><span>index f3994bb..bf5bce1 100644</span><br><span>--- a/sysmocom/defaults.conf</span><br><span>+++ b/sysmocom/defaults.conf</span><br><span>@@ -123,6 +123,13 @@</span><br><span>   a3_report_value: 6</span><br><span>   a3_hysteresis: 0</span><br><span>   a3_time_to_trigger: 480</span><br><span style="color: hsl(120, 100%, 40%);">+  cell_list:</span><br><span style="color: hsl(120, 100%, 40%);">+   - cell_id: 0x01</span><br><span style="color: hsl(120, 100%, 40%);">+     dl_earfcn: 2850</span><br><span style="color: hsl(120, 100%, 40%);">+     scell_list: [0x02]</span><br><span style="color: hsl(120, 100%, 40%);">+   - cell_id: 0x02</span><br><span style="color: hsl(120, 100%, 40%);">+     dl_earfcn: 3050</span><br><span style="color: hsl(120, 100%, 40%);">+     scell_list: [0x01]</span><br><span> </span><br><span> srsenb:</span><br><span>   num_prb: 100</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/17842">change 17842</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/17842"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-gsm-tester </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I4fd30a3e37789b76bfaddc2beba1815154daab7f </div>
<div style="display:none"> Gerrit-Change-Number: 17842 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: srs_andre <andre@softwareradiosystems.com> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>