This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Vadim Yanitskiy gerrit-no-reply at lists.osmocom.orgVadim Yanitskiy has uploaded this change for review. ( https://gerrit.osmocom.org/12325
Change subject: trx_toolkit/fake_trx.py: handle multiple transceivers
......................................................................
trx_toolkit/fake_trx.py: handle multiple transceivers
Change-Id: Ibff31fb3a958a714c828d0dea7e87d47f778fd80
---
M src/target/trx_toolkit/fake_trx.py
1 file changed, 63 insertions(+), 31 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/25/12325/1
diff --git a/src/target/trx_toolkit/fake_trx.py b/src/target/trx_toolkit/fake_trx.py
index 733cc10..421f587 100755
--- a/src/target/trx_toolkit/fake_trx.py
+++ b/src/target/trx_toolkit/fake_trx.py
@@ -302,51 +302,62 @@
# BTS: -75 .. -50
self.fake_pm = FakePM(-120, -105, -75, -50)
+ # List of all transceivers
+ self.trx_list = []
+
# Init TRX instance for BTS
- self.bts_trx = FakeTRX(self.argv.trx_bind_addr,
- self.argv.bts_addr, self.argv.bts_base_port,
- self.clck_gen)
+ trx = FakeTRX(self.argv.trx_bind_addr, self.argv.bts_addr,
+ self.argv.bts_base_port, self.clck_gen)
+ self.trx_list.append(trx)
# Init TRX instance for BB
# NOTE: trxcon doesn't need clock
- self.bb_trx = FakeTRXBB(self.fake_pm,
- self.argv.trx_bind_addr, self.argv.bb_addr,
- self.argv.bb_base_port)
+ trx = FakeTRXBB(self.fake_pm, self.argv.trx_bind_addr,
+ self.argv.bb_addr, self.argv.bb_base_port)
+ self.trx_list.append(trx)
+
+ # Optional BTS transceivers
+ if self.argv.bts_trx_list is not None:
+ for (remote_addr, base_port) in self.argv.bts_trx_list:
+ trx = FakeTRX(self.argv.trx_bind_addr,
+ remote_addr, base_port)
+ self.trx_list.append(trx)
+
+ # Optional BB transceivers
+ if self.argv.bb_trx_list is not None:
+ for (remote_addr, base_port) in self.argv.bb_trx_list:
+ trx = FakeTRXBB(self.fake_pm,
+ self.argv.trx_bind_addr,
+ remote_addr, base_port)
+ self.trx_list.append(trx)
# Burst forwarding between transceivers
- self.burst_fwd = BurstForwarder()
- self.burst_fwd.add_trx(self.bts_trx)
- self.burst_fwd.add_trx(self.bb_trx)
+ self.burst_fwd = BurstForwarder(self.trx_list)
+
+ # Compose list of to be monitored sockets
+ self.sock_list = []
+ for trx in self.trx_list:
+ self.sock_list.append(trx.ctrl_if.sock)
+ self.sock_list.append(trx.data_if.sock)
log.info("Init complete")
# Enter main loop
while True:
- socks = [self.bts_trx.ctrl_if.sock, self.bb_trx.ctrl_if.sock,
- self.bts_trx.data_if.sock, self.bb_trx.data_if.sock]
-
# Wait until we get any data on any socket
- r_event, w_event, x_event = select.select(socks, [], [])
+ r_event, _, _ = select.select(self.sock_list, [], [])
- # Downlink: BTS -> BB
- if self.bts_trx.data_if.sock in r_event:
- msg = self.bts_trx.recv_data_msg()
- if msg is not None:
- self.burst_fwd.forward_msg(self.bts_trx, msg)
+ # Iterate over all transceivers
+ for trx in self.trx_list:
+ # DATA interface
+ if trx.data_if.sock in r_event:
+ msg = trx.recv_data_msg()
+ if msg is not None:
+ self.burst_fwd.forward_msg(trx, msg)
- # Uplink: BB -> BTS
- if self.bb_trx.data_if.sock in r_event:
- msg = self.bb_trx.recv_data_msg()
- if msg is not None:
- self.burst_fwd.forward_msg(self.bb_trx, msg)
-
- # CTRL commands from BTS
- if self.bts_trx.ctrl_if.sock in r_event:
- self.bts_trx.ctrl_if.handle_rx()
-
- # CTRL commands from BB
- if self.bb_trx.ctrl_if.sock in r_event:
- self.bb_trx.ctrl_if.handle_rx()
+ # CTRL interface
+ if trx.ctrl_if.sock in r_event:
+ trx.ctrl_if.handle_rx()
def shutdown(self):
log.info("Shutting down...")
@@ -354,6 +365,16 @@
# Stop clock generator
self.clck_gen.stop()
+ @staticmethod
+ def trx_def(val):
+ try:
+ # e.g. 127.0.0.1:5700
+ trx = val.split(":")
+ addr, port = trx[0], int(trx[1])
+ return (addr, port)
+ except:
+ raise argparse.ArgumentTypeError("Invalid TRX definition: %s" % val)
+
def parse_argv(self):
parser = argparse.ArgumentParser(prog = "fake_trx",
description = "Virtual Um-interface (fake transceiver)")
@@ -378,8 +399,19 @@
dest = "bb_base_port", type = int, default = 6700,
help = "Set BB base port number (default %(default)s)")
+ mtrx_group = parser.add_argument_group("Additional transceivers")
+ mtrx_group.add_argument("--bts-trx", metavar = "REMOTE_ADDR:BASE_PORT",
+ dest = "bts_trx_list", type = self.trx_def, action = "append",
+ help = "Add a transceiver for BTS (e.g. 127.0.0.1:5703)")
+ mtrx_group.add_argument("--bb-trx", metavar = "REMOTE_ADDR:BASE_PORT",
+ dest = "bb_trx_list", type = self.trx_def, action = "append",
+ help = "Add a transceiver for BB (e.g. 127.0.0.1:6703)")
+
argv = parser.parse_args()
+ # TODO: make sure there are no duplicates in both
+ # bts_trx_list and bb_trx_list
+
# Make sure there is no overlap between ports
if argv.bts_base_port == argv.bb_base_port:
parser.error("BTS and BB base ports shall be different")
--
To view, visit https://gerrit.osmocom.org/12325
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmocom-bb
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibff31fb3a958a714c828d0dea7e87d47f778fd80
Gerrit-Change-Number: 12325
Gerrit-PatchSet: 1
Gerrit-Owner: Vadim Yanitskiy <axilirator at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20181216/dd0fb6cb/attachment.htm>