Change in osmocom-bb[master]: trx_toolkit/fake_trx.py: migrate from getopt to argparse

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.org
Fri Dec 7 03:07:59 UTC 2018


Vadim Yanitskiy has uploaded this change for review. ( https://gerrit.osmocom.org/12191


Change subject: trx_toolkit/fake_trx.py: migrate from getopt to argparse
......................................................................

trx_toolkit/fake_trx.py: migrate from getopt to argparse

Change-Id: I0218a328671c591b20b0666dc7c39ba865892acc
---
M src/target/trx_toolkit/fake_trx.py
1 file changed, 40 insertions(+), 86 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/91/12191/1

diff --git a/src/target/trx_toolkit/fake_trx.py b/src/target/trx_toolkit/fake_trx.py
index ced1238..1c991ce 100755
--- a/src/target/trx_toolkit/fake_trx.py
+++ b/src/target/trx_toolkit/fake_trx.py
@@ -27,7 +27,7 @@
 
 import logging as log
 import signal
-import getopt
+import argparse
 import select
 import sys
 
@@ -40,16 +40,9 @@
 from clck_gen import CLCKGen
 
 class Application:
-	# Application variables
-	bts_addr = "127.0.0.1"
-	bb_addr = "127.0.0.1"
-	trx_bind_addr = "0.0.0.0"
-	bts_base_port = 5700
-	bb_base_port = 6700
-
 	def __init__(self):
 		print_copyright(CR_HOLDERS)
-		self.parse_argv()
+		self.argv = self.parse_argv()
 
 		# Set up signal handlers
 		signal.signal(signal.SIGINT, self.sig_handler)
@@ -60,12 +53,14 @@
 
 	def run(self):
 		# Init TRX CTRL interface for BTS
-		self.bts_ctrl = CTRLInterfaceBTS(self.bts_addr, self.bts_base_port + 101,
-			self.trx_bind_addr, self.bts_base_port + 1)
+		self.bts_ctrl = CTRLInterfaceBTS(
+			self.argv.bts_addr, self.argv.bts_base_port + 101,
+			self.argv.trx_bind_addr, self.argv.bts_base_port + 1)
 
 		# Init TRX CTRL interface for BB
-		self.bb_ctrl = CTRLInterfaceBB(self.bb_addr, self.bb_base_port + 101,
-			self.trx_bind_addr, self.bb_base_port + 1)
+		self.bb_ctrl = CTRLInterfaceBB(
+			self.argv.bb_addr, self.argv.bb_base_port + 101,
+			self.argv.trx_bind_addr, self.argv.bb_base_port + 1)
 
 		# Power measurement emulation
 		# Noise: -120 .. -105
@@ -77,10 +72,12 @@
 		self.bb_ctrl.pm = self.pm
 
 		# Init DATA links
-		self.bts_data = UDPLink(self.bts_addr, self.bts_base_port + 102,
-			self.trx_bind_addr, self.bts_base_port + 2)
-		self.bb_data = UDPLink(self.bb_addr, self.bb_base_port + 102,
-			self.trx_bind_addr, self.bb_base_port + 2)
+		self.bts_data = UDPLink(
+			self.argv.bts_addr, self.argv.bts_base_port + 102,
+			self.argv.trx_bind_addr, self.argv.bts_base_port + 2)
+		self.bb_data = UDPLink(
+			self.argv.bb_addr, self.argv.bb_base_port + 102,
+			self.argv.trx_bind_addr, self.argv.bb_base_port + 2)
 
 		# BTS <-> BB burst forwarding
 		self.burst_fwd = BurstForwarder(self.bts_data, self.bb_data)
@@ -90,8 +87,9 @@
 		self.bb_ctrl.burst_fwd = self.burst_fwd
 
 		# Provide clock to BTS
-		self.bts_clck = UDPLink(self.bts_addr, self.bts_base_port + 100,
-			self.trx_bind_addr, self.bts_base_port)
+		self.bts_clck = UDPLink(
+			self.argv.bts_addr, self.argv.bts_base_port + 100,
+			self.argv.trx_bind_addr, self.argv.bts_base_port)
 		self.clck_gen = CLCKGen([self.bts_clck])
 		self.bts_ctrl.clck_gen = self.clck_gen
 
@@ -129,78 +127,34 @@
 		# Stop clock generator
 		self.clck_gen.stop()
 
-	def print_help(self, msg = None):
-		s  = " Usage: " + sys.argv[0] + " [options]\n\n" \
-			 " Some help...\n" \
-			 "  -h --help           this text\n\n"
-
-		s += " TRX interface specific\n" \
-			 "  -R --bts-addr       Set BTS remote address (default %s)\n"   \
-			 "  -r --bb-addr        Set BB remote address (default %s)\n"    \
-			 "  -P --bts-base-port  Set BTS base port number (default %d)\n" \
-			 "  -p --bb-base-port   Set BB base port number (default %d)\n" \
-			 "  -b --trx-bind-addr  Set TRX bind address (default %s)\n"
-
-		print(s % (self.bts_addr, self.bb_addr,
-			self.bts_base_port, self.bb_base_port,
-			self.trx_bind_addr))
-
-		if msg is not None:
-			print(msg)
-
 	def parse_argv(self):
-		try:
-			opts, args = getopt.getopt(sys.argv[1:],
-				"R:r:P:p:b:h",
-				[
-					"help",
-					"bts-addr=", "bb-addr=",
-					"bts-base-port=", "bb-base-port=",
-					"trx-bind-addr=",
-				])
-		except getopt.GetoptError as err:
-			self.print_help("[!] " + str(err))
-			sys.exit(2)
+		parser = argparse.ArgumentParser(prog = "fake_trx",
+			description = "Virtual Um-interface (fake transceiver)")
 
-		for o, v in opts:
-			if o in ("-h", "--help"):
-				self.print_help()
-				sys.exit(2)
+		trx_group = parser.add_argument_group("TRX interface")
+		trx_group.add_argument("-b", "--trx-bind-addr",
+			dest = "trx_bind_addr", type = str, default = "0.0.0.0",
+			help = "Set FakeTRX bind address (default %(default)s)")
+		trx_group.add_argument("-R", "--bts-addr",
+			dest = "bts_addr", type = str, default = "127.0.0.1",
+			help = "Set BTS remote address (default %(default)s)")
+		trx_group.add_argument("-r", "--bb-addr",
+			dest = "bb_addr", type = str, default = "127.0.0.1",
+			help = "Set BB remote address (default %(default)s)")
+		trx_group.add_argument("-P", "--bts-base-port",
+			dest = "bts_base_port", type = int, default = 5700,
+			help = "Set BTS base port number (default %(default)s)")
+		trx_group.add_argument("-p", "--bb-base-port",
+			dest = "bb_base_port", type = int, default = 6700,
+			help = "Set BB base port number (default %(default)s)")
 
-			elif o in ("-R", "--bts-addr"):
-				self.bts_addr = v
-			elif o in ("-r", "--bb-addr"):
-				self.bb_addr = v
+		argv = parser.parse_args()
 
-			elif o in ("-P", "--bts-base-port"):
-				self.bts_base_port = int(v)
-			elif o in ("-p", "--bb-base-port"):
-				self.bb_base_port = int(v)
+		# 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")
 
-			elif o in ("-b", "--trx-bind-addr"):
-				self.trx_bind_addr = v
-
-		# Ensure there is no overlap between ports
-		if self.bts_base_port == self.bb_base_port:
-			self.print_help("[!] BTS and BB base ports should be different")
-			sys.exit(2)
-
-		bts_ports = [
-			self.bts_base_port + 0, self.bts_base_port + 100,
-			self.bts_base_port + 1, self.bts_base_port + 101,
-			self.bts_base_port + 2, self.bts_base_port + 102,
-		]
-
-		bb_ports = [
-			self.bb_base_port + 0, self.bb_base_port + 100,
-			self.bb_base_port + 1, self.bb_base_port + 101,
-			self.bb_base_port + 2, self.bb_base_port + 102,
-		]
-
-		for p in bb_ports:
-			if p in bts_ports:
-				self.print_help("[!] BTS and BB ports overlap detected")
-				sys.exit(2)
+		return argv
 
 	def sig_handler(self, signum, frame):
 		log.info("Signal %d received" % signum)

-- 
To view, visit https://gerrit.osmocom.org/12191
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: I0218a328671c591b20b0666dc7c39ba865892acc
Gerrit-Change-Number: 12191
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/20181207/8f53b1fe/attachment.htm>


More information about the gerrit-log mailing list