enb: Add attribute to set 'id'

Change-Id: I8ce296c7875d557062dc13e7093ce0400050f2ce
diff --git a/src/osmo_gsm_tester/obj/enb.py b/src/osmo_gsm_tester/obj/enb.py
index 59b5bfe..e0f7be0 100644
--- a/src/osmo_gsm_tester/obj/enb.py
+++ b/src/osmo_gsm_tester/obj/enb.py
@@ -37,6 +37,7 @@
             self._gtp_bind_addr = self._addr
         self.set_name('%s_%s' % (name, self._addr))
         self._txmode = 0
+        self._id = None
         self._num_prb = 0
         self._num_cells = None
         self._epc = None
@@ -49,6 +50,8 @@
         for config_specifics in config_specifics_li:
             config.overlay(values, dict(enb=self.suite_run.config().get(config_specifics, {})))
         config.overlay(values, dict(enb=self._conf))
+        self._id = int(values['enb'].get('id', None))
+        assert self._id is not None
         self._num_prb = int(values['enb'].get('num_prb', None))
         assert self._num_prb
         self._txmode = int(values['enb'].get('transmission_mode', None))
@@ -78,6 +81,9 @@
 
         return values
 
+    def id(self):
+        return self._id
+
     def num_ports(self):
         if self._txmode == 1:
             return 1
diff --git a/src/osmo_gsm_tester/obj/epc_srs.py b/src/osmo_gsm_tester/obj/epc_srs.py
index fc1ee5f..ec9dc44 100644
--- a/src/osmo_gsm_tester/obj/epc_srs.py
+++ b/src/osmo_gsm_tester/obj/epc_srs.py
@@ -190,8 +190,12 @@
         return subscriber_id
 
     def enb_is_connected(self, enb):
-        # TODO: match against srsENB config: "S1 Setup Request - eNB Name: srsenb01, eNB id: 0x19"
-        return 'S1 Setup Request - eNB' in (self.process.get_stdout() or '')
+        # Match against sample line: "S1 Setup Request - eNB Name: srsenb01, eNB id: 0x19"
+        stdout_lines = (self.process.get_stdout() or '').splitlines()
+        for l in stdout_lines:
+            if l.startswith('S1 Setup Request') and l.endswith('eNB id: %s' % hex(enb.id()).lower()):
+                return True
+        return False
 
     def running(self):
         return not self.process.terminated()
diff --git a/src/osmo_gsm_tester/resource.py b/src/osmo_gsm_tester/resource.py
index d4757f3..cafdab8 100644
--- a/src/osmo_gsm_tester/resource.py
+++ b/src/osmo_gsm_tester/resource.py
@@ -89,6 +89,7 @@
         'enb[].remote_user': schema.STR,
         'enb[].addr': schema.IPV4,
         'enb[].gtp_bind_addr': schema.IPV4,
+        'enb[].id': schema.UINT,
         'enb[].num_prb': schema.UINT,
         'enb[].transmission_mode': schema.LTE_TRANSMISSION_MODE,
         'enb[].rf_dev_type': schema.STR,
diff --git a/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl b/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl
index 11704b6..89e65f1 100644
--- a/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl
+++ b/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl
@@ -51,7 +51,7 @@
   gtp_addr: "${enb.gtp_bind_addr}",
 
   /* high 20 bits of SIB1.cellIdentifier */
-  enb_id: 0x19B,
+  enb_id: ${enb.id},
 
   /* list of cells */
   cell_list: [
diff --git a/src/osmo_gsm_tester/templates/srsenb.conf.tmpl b/src/osmo_gsm_tester/templates/srsenb.conf.tmpl
index 94e724b..95b10f0 100644
--- a/src/osmo_gsm_tester/templates/srsenb.conf.tmpl
+++ b/src/osmo_gsm_tester/templates/srsenb.conf.tmpl
@@ -19,7 +19,8 @@
 #
 #####################################################################
 [enb]
-enb_id = 0x19B
+# need hex value here for enb_id due to bug: https://github.com/srsLTE/srsLTE/issues/485
+enb_id = ${hex(int(enb.id))}
 mcc = ${enb.mcc}
 mnc = ${enb.mnc}
 mme_addr = ${enb.mme_addr}