osmo-bts-trx: Add multiTRX support

Support is limited to 1 osmo-trx with 1 phy and multiple instances.

Change-Id: If2bda5ec7ac9fa3fe6bc5d71f323c3ccc2a70158
diff --git a/src/osmo_gsm_tester/bts_osmotrx.py b/src/osmo_gsm_tester/bts_osmotrx.py
index 1c7349f..a4bc082 100644
--- a/src/osmo_gsm_tester/bts_osmotrx.py
+++ b/src/osmo_gsm_tester/bts_osmotrx.py
@@ -77,7 +77,7 @@
                             'osmo_trx': {
                                 'bts_ip': self.remote_addr(),
                                 'trx_ip': self.trx_remote_ip(),
-                                'channels': [{}] # TODO: implement channels for multiTRX
+                                'channels': [{} for trx_i in range(self.num_trx())]
                             }
                         }
         })
@@ -134,7 +134,8 @@
 
         self.proc_bts = self.launch_process(keepalive, OsmoBtsTrx.BIN_BTS_TRX, '-r', '1',
                             '-c', os.path.abspath(self.config_file),
-                            '-i', self.bsc.addr())
+                            '-i', self.bsc.addr(),
+                            '-t', str(self.num_trx()))
         self.suite_run.poll()
 
 class OsmoTrx(log.Origin, metaclass=ABCMeta):
diff --git a/src/osmo_gsm_tester/templates/osmo-bts-trx.cfg.tmpl b/src/osmo_gsm_tester/templates/osmo-bts-trx.cfg.tmpl
index 5dba323..677b047 100644
--- a/src/osmo_gsm_tester/templates/osmo-bts-trx.cfg.tmpl
+++ b/src/osmo_gsm_tester/templates/osmo-bts-trx.cfg.tmpl
@@ -23,9 +23,11 @@
 phy 0
  osmotrx ip local ${osmo_bts_trx.osmo_trx.bts_ip}
  osmotrx ip remote ${osmo_bts_trx.osmo_trx.trx_ip}
- instance 0
+%for chan in osmo_bts_trx.osmo_trx.channels:
+ instance ${loop.index}
   osmotrx rx-gain 25
   osmotrx tx-attenuation oml
+%endfor
 bts 0
  band ${osmo_bts_trx.band}
  ipa unit-id ${osmo_bts_trx.ipa_unit_id} 0
@@ -44,5 +46,7 @@
  gsmtap-sapi ptcch
  gsmtap-sapi cbch
  gsmtap-sapi sacch
- trx 0
-  phy 0 instance 0
+%for chan in osmo_bts_trx.osmo_trx.channels:
+ trx ${loop.index}
+  phy 0 instance ${loop.index}
+%endfor