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>