<p>Vadim Yanitskiy has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/12191">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">trx_toolkit/fake_trx.py: migrate from getopt to argparse<br><br>Change-Id: I0218a328671c591b20b0666dc7c39ba865892acc<br>---<br>M src/target/trx_toolkit/fake_trx.py<br>1 file changed, 40 insertions(+), 86 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/91/12191/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/target/trx_toolkit/fake_trx.py b/src/target/trx_toolkit/fake_trx.py</span><br><span>index ced1238..1c991ce 100755</span><br><span>--- a/src/target/trx_toolkit/fake_trx.py</span><br><span>+++ b/src/target/trx_toolkit/fake_trx.py</span><br><span>@@ -27,7 +27,7 @@</span><br><span> </span><br><span> import logging as log</span><br><span> import signal</span><br><span style="color: hsl(0, 100%, 40%);">-import getopt</span><br><span style="color: hsl(120, 100%, 40%);">+import argparse</span><br><span> import select</span><br><span> import sys</span><br><span> </span><br><span>@@ -40,16 +40,9 @@</span><br><span> from clck_gen import CLCKGen</span><br><span> </span><br><span> class Application:</span><br><span style="color: hsl(0, 100%, 40%);">-   # Application variables</span><br><span style="color: hsl(0, 100%, 40%);">- bts_addr = "127.0.0.1"</span><br><span style="color: hsl(0, 100%, 40%);">-        bb_addr = "127.0.0.1"</span><br><span style="color: hsl(0, 100%, 40%);">- trx_bind_addr = "0.0.0.0"</span><br><span style="color: hsl(0, 100%, 40%);">-     bts_base_port = 5700</span><br><span style="color: hsl(0, 100%, 40%);">-    bb_base_port = 6700</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>  def __init__(self):</span><br><span>          print_copyright(CR_HOLDERS)</span><br><span style="color: hsl(0, 100%, 40%);">-             self.parse_argv()</span><br><span style="color: hsl(120, 100%, 40%);">+             self.argv = self.parse_argv()</span><br><span> </span><br><span>            # Set up signal handlers</span><br><span>             signal.signal(signal.SIGINT, self.sig_handler)</span><br><span>@@ -60,12 +53,14 @@</span><br><span> </span><br><span>     def run(self):</span><br><span>               # Init TRX CTRL interface for BTS</span><br><span style="color: hsl(0, 100%, 40%);">-               self.bts_ctrl = CTRLInterfaceBTS(self.bts_addr, self.bts_base_port + 101,</span><br><span style="color: hsl(0, 100%, 40%);">-                       self.trx_bind_addr, self.bts_base_port + 1)</span><br><span style="color: hsl(120, 100%, 40%);">+           self.bts_ctrl = CTRLInterfaceBTS(</span><br><span style="color: hsl(120, 100%, 40%);">+                     self.argv.bts_addr, self.argv.bts_base_port + 101,</span><br><span style="color: hsl(120, 100%, 40%);">+                    self.argv.trx_bind_addr, self.argv.bts_base_port + 1)</span><br><span> </span><br><span>            # Init TRX CTRL interface for BB</span><br><span style="color: hsl(0, 100%, 40%);">-                self.bb_ctrl = CTRLInterfaceBB(self.bb_addr, self.bb_base_port + 101,</span><br><span style="color: hsl(0, 100%, 40%);">-                   self.trx_bind_addr, self.bb_base_port + 1)</span><br><span style="color: hsl(120, 100%, 40%);">+            self.bb_ctrl = CTRLInterfaceBB(</span><br><span style="color: hsl(120, 100%, 40%);">+                       self.argv.bb_addr, self.argv.bb_base_port + 101,</span><br><span style="color: hsl(120, 100%, 40%);">+                      self.argv.trx_bind_addr, self.argv.bb_base_port + 1)</span><br><span> </span><br><span>             # Power measurement emulation</span><br><span>                # Noise: -120 .. -105</span><br><span>@@ -77,10 +72,12 @@</span><br><span>          self.bb_ctrl.pm = self.pm</span><br><span> </span><br><span>                # Init DATA links</span><br><span style="color: hsl(0, 100%, 40%);">-               self.bts_data = UDPLink(self.bts_addr, self.bts_base_port + 102,</span><br><span style="color: hsl(0, 100%, 40%);">-                        self.trx_bind_addr, self.bts_base_port + 2)</span><br><span style="color: hsl(0, 100%, 40%);">-             self.bb_data = UDPLink(self.bb_addr, self.bb_base_port + 102,</span><br><span style="color: hsl(0, 100%, 40%);">-                   self.trx_bind_addr, self.bb_base_port + 2)</span><br><span style="color: hsl(120, 100%, 40%);">+            self.bts_data = UDPLink(</span><br><span style="color: hsl(120, 100%, 40%);">+                      self.argv.bts_addr, self.argv.bts_base_port + 102,</span><br><span style="color: hsl(120, 100%, 40%);">+                    self.argv.trx_bind_addr, self.argv.bts_base_port + 2)</span><br><span style="color: hsl(120, 100%, 40%);">+         self.bb_data = UDPLink(</span><br><span style="color: hsl(120, 100%, 40%);">+                       self.argv.bb_addr, self.argv.bb_base_port + 102,</span><br><span style="color: hsl(120, 100%, 40%);">+                      self.argv.trx_bind_addr, self.argv.bb_base_port + 2)</span><br><span> </span><br><span>             # BTS <-> BB burst forwarding</span><br><span>          self.burst_fwd = BurstForwarder(self.bts_data, self.bb_data)</span><br><span>@@ -90,8 +87,9 @@</span><br><span>             self.bb_ctrl.burst_fwd = self.burst_fwd</span><br><span> </span><br><span>          # Provide clock to BTS</span><br><span style="color: hsl(0, 100%, 40%);">-          self.bts_clck = UDPLink(self.bts_addr, self.bts_base_port + 100,</span><br><span style="color: hsl(0, 100%, 40%);">-                        self.trx_bind_addr, self.bts_base_port)</span><br><span style="color: hsl(120, 100%, 40%);">+               self.bts_clck = UDPLink(</span><br><span style="color: hsl(120, 100%, 40%);">+                      self.argv.bts_addr, self.argv.bts_base_port + 100,</span><br><span style="color: hsl(120, 100%, 40%);">+                    self.argv.trx_bind_addr, self.argv.bts_base_port)</span><br><span>            self.clck_gen = CLCKGen([self.bts_clck])</span><br><span>             self.bts_ctrl.clck_gen = self.clck_gen</span><br><span> </span><br><span>@@ -129,78 +127,34 @@</span><br><span>           # Stop clock generator</span><br><span>               self.clck_gen.stop()</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        def print_help(self, msg = None):</span><br><span style="color: hsl(0, 100%, 40%);">-               s  = " Usage: " + sys.argv[0] + " [options]\n\n" \</span><br><span style="color: hsl(0, 100%, 40%);">-                   " Some help...\n" \</span><br><span style="color: hsl(0, 100%, 40%);">-                   "  -h --help           this text\n\n"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-                s += " TRX interface specific\n" \</span><br><span style="color: hsl(0, 100%, 40%);">-                     "  -R --bts-addr       Set BTS remote address (default %s)\n"   \</span><br><span style="color: hsl(0, 100%, 40%);">-                     "  -r --bb-addr        Set BB remote address (default %s)\n"    \</span><br><span style="color: hsl(0, 100%, 40%);">-                     "  -P --bts-base-port  Set BTS base port number (default %d)\n" \</span><br><span style="color: hsl(0, 100%, 40%);">-                     "  -p --bb-base-port   Set BB base port number (default %d)\n" \</span><br><span style="color: hsl(0, 100%, 40%);">-                      "  -b --trx-bind-addr  Set TRX bind address (default %s)\n"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-          print(s % (self.bts_addr, self.bb_addr,</span><br><span style="color: hsl(0, 100%, 40%);">-                 self.bts_base_port, self.bb_base_port,</span><br><span style="color: hsl(0, 100%, 40%);">-                  self.trx_bind_addr))</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-            if msg is not None:</span><br><span style="color: hsl(0, 100%, 40%);">-                     print(msg)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>   def parse_argv(self):</span><br><span style="color: hsl(0, 100%, 40%);">-           try:</span><br><span style="color: hsl(0, 100%, 40%);">-                    opts, args = getopt.getopt(sys.argv[1:],</span><br><span style="color: hsl(0, 100%, 40%);">-                                "R:r:P:p:b:h",</span><br><span style="color: hsl(0, 100%, 40%);">-                                [</span><br><span style="color: hsl(0, 100%, 40%);">-                                       "help",</span><br><span style="color: hsl(0, 100%, 40%);">-                                       "bts-addr=", "bb-addr=",</span><br><span style="color: hsl(0, 100%, 40%);">-                                    "bts-base-port=", "bb-base-port=",</span><br><span style="color: hsl(0, 100%, 40%);">-                                  "trx-bind-addr=",</span><br><span style="color: hsl(0, 100%, 40%);">-                             ])</span><br><span style="color: hsl(0, 100%, 40%);">-              except getopt.GetoptError as err:</span><br><span style="color: hsl(0, 100%, 40%);">-                       self.print_help("[!] " + str(err))</span><br><span style="color: hsl(0, 100%, 40%);">-                    sys.exit(2)</span><br><span style="color: hsl(120, 100%, 40%);">+           parser = argparse.ArgumentParser(prog = "fake_trx",</span><br><span style="color: hsl(120, 100%, 40%);">+                 description = "Virtual Um-interface (fake transceiver)")</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-          for o, v in opts:</span><br><span style="color: hsl(0, 100%, 40%);">-                       if o in ("-h", "--help"):</span><br><span style="color: hsl(0, 100%, 40%);">-                           self.print_help()</span><br><span style="color: hsl(0, 100%, 40%);">-                               sys.exit(2)</span><br><span style="color: hsl(120, 100%, 40%);">+           trx_group = parser.add_argument_group("TRX interface")</span><br><span style="color: hsl(120, 100%, 40%);">+              trx_group.add_argument("-b", "--trx-bind-addr",</span><br><span style="color: hsl(120, 100%, 40%);">+                   dest = "trx_bind_addr", type = str, default = "0.0.0.0",</span><br><span style="color: hsl(120, 100%, 40%);">+                  help = "Set FakeTRX bind address (default %(default)s)")</span><br><span style="color: hsl(120, 100%, 40%);">+            trx_group.add_argument("-R", "--bts-addr",</span><br><span style="color: hsl(120, 100%, 40%);">+                        dest = "bts_addr", type = str, default = "127.0.0.1",</span><br><span style="color: hsl(120, 100%, 40%);">+                     help = "Set BTS remote address (default %(default)s)")</span><br><span style="color: hsl(120, 100%, 40%);">+              trx_group.add_argument("-r", "--bb-addr",</span><br><span style="color: hsl(120, 100%, 40%);">+                 dest = "bb_addr", type = str, default = "127.0.0.1",</span><br><span style="color: hsl(120, 100%, 40%);">+                      help = "Set BB remote address (default %(default)s)")</span><br><span style="color: hsl(120, 100%, 40%);">+               trx_group.add_argument("-P", "--bts-base-port",</span><br><span style="color: hsl(120, 100%, 40%);">+                   dest = "bts_base_port", type = int, default = 5700,</span><br><span style="color: hsl(120, 100%, 40%);">+                 help = "Set BTS base port number (default %(default)s)")</span><br><span style="color: hsl(120, 100%, 40%);">+            trx_group.add_argument("-p", "--bb-base-port",</span><br><span style="color: hsl(120, 100%, 40%);">+                    dest = "bb_base_port", type = int, default = 6700,</span><br><span style="color: hsl(120, 100%, 40%);">+                  help = "Set BB base port number (default %(default)s)")</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                   elif o in ("-R", "--bts-addr"):</span><br><span style="color: hsl(0, 100%, 40%);">-                             self.bts_addr = v</span><br><span style="color: hsl(0, 100%, 40%);">-                       elif o in ("-r", "--bb-addr"):</span><br><span style="color: hsl(0, 100%, 40%);">-                              self.bb_addr = v</span><br><span style="color: hsl(120, 100%, 40%);">+              argv = parser.parse_args()</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                  elif o in ("-P", "--bts-base-port"):</span><br><span style="color: hsl(0, 100%, 40%);">-                                self.bts_base_port = int(v)</span><br><span style="color: hsl(0, 100%, 40%);">-                     elif o in ("-p", "--bb-base-port"):</span><br><span style="color: hsl(0, 100%, 40%);">-                         self.bb_base_port = int(v)</span><br><span style="color: hsl(120, 100%, 40%);">+            # Make sure there is no overlap between ports</span><br><span style="color: hsl(120, 100%, 40%);">+         if argv.bts_base_port == argv.bb_base_port:</span><br><span style="color: hsl(120, 100%, 40%);">+                   parser.error("BTS and BB base ports shall be different")</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                  elif o in ("-b", "--trx-bind-addr"):</span><br><span style="color: hsl(0, 100%, 40%);">-                                self.trx_bind_addr = v</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-          # Ensure there is no overlap between ports</span><br><span style="color: hsl(0, 100%, 40%);">-              if self.bts_base_port == self.bb_base_port:</span><br><span style="color: hsl(0, 100%, 40%);">-                     self.print_help("[!] BTS and BB base ports should be different")</span><br><span style="color: hsl(0, 100%, 40%);">-                      sys.exit(2)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-             bts_ports = [</span><br><span style="color: hsl(0, 100%, 40%);">-                   self.bts_base_port + 0, self.bts_base_port + 100,</span><br><span style="color: hsl(0, 100%, 40%);">-                       self.bts_base_port + 1, self.bts_base_port + 101,</span><br><span style="color: hsl(0, 100%, 40%);">-                       self.bts_base_port + 2, self.bts_base_port + 102,</span><br><span style="color: hsl(0, 100%, 40%);">-               ]</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-               bb_ports = [</span><br><span style="color: hsl(0, 100%, 40%);">-                    self.bb_base_port + 0, self.bb_base_port + 100,</span><br><span style="color: hsl(0, 100%, 40%);">-                 self.bb_base_port + 1, self.bb_base_port + 101,</span><br><span style="color: hsl(0, 100%, 40%);">-                 self.bb_base_port + 2, self.bb_base_port + 102,</span><br><span style="color: hsl(0, 100%, 40%);">-         ]</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-               for p in bb_ports:</span><br><span style="color: hsl(0, 100%, 40%);">-                      if p in bts_ports:</span><br><span style="color: hsl(0, 100%, 40%);">-                              self.print_help("[!] BTS and BB ports overlap detected")</span><br><span style="color: hsl(0, 100%, 40%);">-                              sys.exit(2)</span><br><span style="color: hsl(120, 100%, 40%);">+           return argv</span><br><span> </span><br><span>      def sig_handler(self, signum, frame):</span><br><span>                log.info("Signal %d received" % signum)</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12191">change 12191</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/12191"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmocom-bb </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I0218a328671c591b20b0666dc7c39ba865892acc </div>
<div style="display:none"> Gerrit-Change-Number: 12191 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Vadim Yanitskiy <axilirator@gmail.com> </div>