<p>Vadim Yanitskiy has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/12187">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">trx_toolkit/burst_gen.py: migrate from getopt to argparse<br><br>Change-Id: I7eb3f2e2713f1f97293bd47a2eae3b140f63fb59<br>---<br>M src/target/trx_toolkit/burst_gen.py<br>1 file changed, 83 insertions(+), 140 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/87/12187/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/target/trx_toolkit/burst_gen.py b/src/target/trx_toolkit/burst_gen.py</span><br><span>index 0268da9..7625a27 100755</span><br><span>--- a/src/target/trx_toolkit/burst_gen.py</span><br><span>+++ b/src/target/trx_toolkit/burst_gen.py</span><br><span>@@ -28,7 +28,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 sys</span><br><span> </span><br><span> from rand_burst_gen import RandBurstGen</span><br><span>@@ -38,29 +38,9 @@</span><br><span> from data_msg import *</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%);">- remote_addr = "127.0.0.1"</span><br><span style="color: hsl(0, 100%, 40%);">-     bind_addr = "0.0.0.0"</span><br><span style="color: hsl(0, 100%, 40%);">- base_port = 5700</span><br><span style="color: hsl(0, 100%, 40%);">-        conn_mode = "TRX"</span><br><span style="color: hsl(0, 100%, 40%);">-     output_file = None</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      burst_type = None</span><br><span style="color: hsl(0, 100%, 40%);">-       burst_count = 1</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- # Common header fields</span><br><span style="color: hsl(0, 100%, 40%);">-  fn = None</span><br><span style="color: hsl(0, 100%, 40%);">-       tn = None</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       # Message specific header fields</span><br><span style="color: hsl(0, 100%, 40%);">-        toa256 = None</span><br><span style="color: hsl(0, 100%, 40%);">-   rssi = None</span><br><span style="color: hsl(0, 100%, 40%);">-     pwr = None</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(0, 100%, 40%);">-               self.check_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>@@ -70,32 +50,35 @@</span><br><span>                         format = "[%(levelname)s] %(filename)s:%(lineno)d %(message)s")</span><br><span> </span><br><span>                # Open requested capture file</span><br><span style="color: hsl(0, 100%, 40%);">-           if self.output_file is not None:</span><br><span style="color: hsl(0, 100%, 40%);">-                        self.ddf = DATADumpFile(self.output_file)</span><br><span style="color: hsl(120, 100%, 40%);">+             if self.argv.output_file is not None:</span><br><span style="color: hsl(120, 100%, 40%);">+                 self.ddf = DATADumpFile(self.argv.output_file)</span><br><span> </span><br><span>   def run(self):</span><br><span>               # Init DATA interface with TRX or L1</span><br><span style="color: hsl(0, 100%, 40%);">-            if self.conn_mode == "TRX":</span><br><span style="color: hsl(0, 100%, 40%);">-                   self.data_if = DATAInterface(self.remote_addr, self.base_port + 2,</span><br><span style="color: hsl(0, 100%, 40%);">-                              self.bind_addr, self.base_port + 102)</span><br><span style="color: hsl(0, 100%, 40%);">-           elif self.conn_mode == "L1":</span><br><span style="color: hsl(0, 100%, 40%);">-                  self.data_if = DATAInterface(self.remote_addr, self.base_port + 102,</span><br><span style="color: hsl(0, 100%, 40%);">-                            self.bind_addr, self.base_port + 2)</span><br><span style="color: hsl(120, 100%, 40%);">+           if self.argv.conn_mode == "TRX":</span><br><span style="color: hsl(120, 100%, 40%);">+                    self.data_if = DATAInterface(</span><br><span style="color: hsl(120, 100%, 40%);">+                         self.argv.remote_addr, self.argv.base_port + 2,</span><br><span style="color: hsl(120, 100%, 40%);">+                               self.argv.bind_addr, self.argv.base_port + 102)</span><br><span style="color: hsl(120, 100%, 40%);">+               elif self.argv.conn_mode == "L1":</span><br><span style="color: hsl(120, 100%, 40%);">+                   self.data_if = DATAInterface(</span><br><span style="color: hsl(120, 100%, 40%);">+                         self.argv.remote_addr, self.argv.base_port + 102,</span><br><span style="color: hsl(120, 100%, 40%);">+                             self.argv.bind_addr, self.argv.base_port + 2)</span><br><span> </span><br><span>            # Init random burst generator</span><br><span>                burst_gen = RandBurstGen()</span><br><span> </span><br><span>               # Init an empty DATA message</span><br><span style="color: hsl(0, 100%, 40%);">-            if self.conn_mode == "TRX":</span><br><span style="color: hsl(120, 100%, 40%);">+         if self.argv.conn_mode == "TRX":</span><br><span>                   msg = DATAMSG_L12TRX()</span><br><span style="color: hsl(0, 100%, 40%);">-          elif self.conn_mode == "L1":</span><br><span style="color: hsl(120, 100%, 40%);">+                elif self.argv.conn_mode == "L1":</span><br><span>                  msg = DATAMSG_TRX2L1()</span><br><span> </span><br><span>           # Generate a random frame number or use provided one</span><br><span style="color: hsl(0, 100%, 40%);">-            fn_init = msg.rand_fn() if self.fn is None else self.fn</span><br><span style="color: hsl(120, 100%, 40%);">+               fn_init = msg.rand_fn() if self.argv.tdma_fn is None \</span><br><span style="color: hsl(120, 100%, 40%);">+                        else self.argv.tdma_fn</span><br><span> </span><br><span>           # Send as much bursts as required</span><br><span style="color: hsl(0, 100%, 40%);">-               for i in range(self.burst_count):</span><br><span style="color: hsl(120, 100%, 40%);">+             for i in range(self.argv.burst_count):</span><br><span>                       # Randomize the message header</span><br><span>                       msg.rand_hdr()</span><br><span> </span><br><span>@@ -103,145 +86,105 @@</span><br><span>                  msg.fn = (fn_init + i) % GSM_HYPERFRAME</span><br><span> </span><br><span>                  # Set timeslot number</span><br><span style="color: hsl(0, 100%, 40%);">-                   if self.tn is not None:</span><br><span style="color: hsl(0, 100%, 40%);">-                         msg.tn = self.tn</span><br><span style="color: hsl(120, 100%, 40%);">+                      if self.argv.tdma_tn is not None:</span><br><span style="color: hsl(120, 100%, 40%);">+                             msg.tn = self.argv.tdma_tn</span><br><span> </span><br><span>                       # Set transmit power level</span><br><span style="color: hsl(0, 100%, 40%);">-                      if self.pwr is not None:</span><br><span style="color: hsl(0, 100%, 40%);">-                                msg.pwr = self.pwr</span><br><span style="color: hsl(120, 100%, 40%);">+                    if self.argv.pwr is not None:</span><br><span style="color: hsl(120, 100%, 40%);">+                         msg.pwr = self.argv.pwr</span><br><span> </span><br><span>                  # Set time of arrival</span><br><span style="color: hsl(0, 100%, 40%);">-                   if self.toa256 is not None:</span><br><span style="color: hsl(0, 100%, 40%);">-                             msg.toa256 = self.toa256</span><br><span style="color: hsl(120, 100%, 40%);">+                      if self.argv.toa is not None:</span><br><span style="color: hsl(120, 100%, 40%);">+                         msg.toa256 = int(float(self.argv.toa) * 256.0 + 0.5)</span><br><span style="color: hsl(120, 100%, 40%);">+                  elif self.argv.toa256 is not None:</span><br><span style="color: hsl(120, 100%, 40%);">+                            msg.toa256 = self.argv.toa256</span><br><span> </span><br><span>                    # Set RSSI</span><br><span style="color: hsl(0, 100%, 40%);">-                      if self.rssi is not None:</span><br><span style="color: hsl(0, 100%, 40%);">-                               msg.rssi = self.rssi</span><br><span style="color: hsl(120, 100%, 40%);">+                  if self.argv.rssi is not None:</span><br><span style="color: hsl(120, 100%, 40%);">+                                msg.rssi = self.argv.rssi</span><br><span> </span><br><span>                        # Generate a random burst</span><br><span style="color: hsl(0, 100%, 40%);">-                       if self.burst_type == "NB":</span><br><span style="color: hsl(120, 100%, 40%);">+                 if self.argv.burst_type == "NB":</span><br><span>                           burst = burst_gen.gen_nb()</span><br><span style="color: hsl(0, 100%, 40%);">-                      elif self.burst_type == "FB":</span><br><span style="color: hsl(120, 100%, 40%);">+                       elif self.argv.burst_type == "FB":</span><br><span>                                 burst = burst_gen.gen_fb()</span><br><span style="color: hsl(0, 100%, 40%);">-                      elif self.burst_type == "SB":</span><br><span style="color: hsl(120, 100%, 40%);">+                       elif self.argv.burst_type == "SB":</span><br><span>                                 burst = burst_gen.gen_sb()</span><br><span style="color: hsl(0, 100%, 40%);">-                      elif self.burst_type == "AB":</span><br><span style="color: hsl(120, 100%, 40%);">+                       elif self.argv.burst_type == "AB":</span><br><span>                                 burst = burst_gen.gen_ab()</span><br><span> </span><br><span>                       # Convert to soft-bits in case of TRX -> L1 message</span><br><span style="color: hsl(0, 100%, 40%);">-                  if self.conn_mode == "L1":</span><br><span style="color: hsl(120, 100%, 40%);">+                  if self.argv.conn_mode == "L1":</span><br><span>                            burst = msg.ubit2sbit(burst)</span><br><span> </span><br><span>                     # Set burst</span><br><span>                  msg.burst = burst</span><br><span> </span><br><span>                        log.info("Sending %d/%d %s burst %s to %s..."</span><br><span style="color: hsl(0, 100%, 40%);">-                         % (i + 1, self.burst_count, self.burst_type,</span><br><span style="color: hsl(0, 100%, 40%);">-                                    msg.desc_hdr(), self.conn_mode))</span><br><span style="color: hsl(120, 100%, 40%);">+                              % (i + 1, self.argv.burst_count, self.argv.burst_type,</span><br><span style="color: hsl(120, 100%, 40%);">+                                        msg.desc_hdr(), self.argv.conn_mode))</span><br><span> </span><br><span>                    # Send message</span><br><span>                       self.data_if.send_msg(msg)</span><br><span> </span><br><span>                       # Append a new message to the capture</span><br><span style="color: hsl(0, 100%, 40%);">-                   if self.output_file is not None:</span><br><span style="color: hsl(120, 100%, 40%);">+                      if self.argv.output_file is not None:</span><br><span>                                self.ddf.append_msg(msg)</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%);">-                     "  -o --output-file    Write bursts to a capture file\n"        \</span><br><span style="color: hsl(0, 100%, 40%);">-                     "  -m --conn-mode      Send bursts to: TRX (default) / L1\n"    \</span><br><span style="color: hsl(0, 100%, 40%);">-                     "  -r --remote-addr    Set remote address (default %s)\n"       \</span><br><span style="color: hsl(0, 100%, 40%);">-                     "  -b --bind-addr      Set local address (default %s)\n"        \</span><br><span style="color: hsl(0, 100%, 40%);">-                     "  -p --base-port      Set base port number (default %d)\n\n"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-                s += " Burst generation\n" \</span><br><span style="color: hsl(0, 100%, 40%);">-                   "  -B --burst-type     Random burst type (NB, FB, SB, AB)\n"    \</span><br><span style="color: hsl(0, 100%, 40%);">-                     "  -c --burst-count    How much bursts to send (default 1)\n"   \</span><br><span style="color: hsl(0, 100%, 40%);">-                     "  -f --frame-number   Set frame number (default random)\n"     \</span><br><span style="color: hsl(0, 100%, 40%);">-                     "  -t --timeslot       Set timeslot index (default random)\n"   \</span><br><span style="color: hsl(0, 100%, 40%);">-                     "     --pwr            Set power level (default random)\n"      \</span><br><span style="color: hsl(0, 100%, 40%);">-                     "     --rssi           Set RSSI (default random)\n"             \</span><br><span style="color: hsl(0, 100%, 40%);">-                     "     --toa            Set ToA in symbols (default random)\n"   \</span><br><span style="color: hsl(0, 100%, 40%);">-                     "     --toa256         Set ToA in 1/256 symbol periods\n"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-            print(s % (self.remote_addr, self.bind_addr, self.base_port))</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%);">-                                "o:m:r:b:p:B:c:f:t: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%);">-                                       "output-file="</span><br><span style="color: hsl(0, 100%, 40%);">-                                        "conn-mode=",</span><br><span style="color: hsl(0, 100%, 40%);">-                                 "remote-addr=",</span><br><span style="color: hsl(0, 100%, 40%);">-                                       "bind-addr=",</span><br><span style="color: hsl(0, 100%, 40%);">-                                 "base-port=",</span><br><span style="color: hsl(0, 100%, 40%);">-                                 "burst-type=",</span><br><span style="color: hsl(0, 100%, 40%);">-                                        "burst-count=",</span><br><span style="color: hsl(0, 100%, 40%);">-                                       "frame-number=",</span><br><span style="color: hsl(0, 100%, 40%);">-                                      "timeslot=",</span><br><span style="color: hsl(0, 100%, 40%);">-                                  "rssi=",</span><br><span style="color: hsl(0, 100%, 40%);">-                                      "toa=",</span><br><span style="color: hsl(0, 100%, 40%);">-                                       "toa256=",</span><br><span style="color: hsl(0, 100%, 40%);">-                                    "pwr=",</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 = "burst_gen",</span><br><span style="color: hsl(120, 100%, 40%);">+                        description = "Auxiliary tool to generate and send random bursts")</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("-r", "--remote-addr",</span><br><span style="color: hsl(120, 100%, 40%);">+                     dest = "remote_addr", type = str, default = "127.0.0.1",</span><br><span style="color: hsl(120, 100%, 40%);">+                  help = "Set remote address (default %(default)s)")</span><br><span style="color: hsl(120, 100%, 40%);">+          trx_group.add_argument("-b", "--bind-addr",</span><br><span style="color: hsl(120, 100%, 40%);">+                       dest = "bind_addr", type = str, default = "0.0.0.0",</span><br><span style="color: hsl(120, 100%, 40%);">+                      help = "Set bind address (default %(default)s)")</span><br><span style="color: hsl(120, 100%, 40%);">+            trx_group.add_argument("-p", "--base-port",</span><br><span style="color: hsl(120, 100%, 40%);">+                       dest = "base_port", type = int, default = 6700,</span><br><span style="color: hsl(120, 100%, 40%);">+                     help = "Set base port number (default %(default)s)")</span><br><span style="color: hsl(120, 100%, 40%);">+                trx_group.add_argument("-m", "--conn-mode",</span><br><span style="color: hsl(120, 100%, 40%);">+                       dest = "conn_mode", type = str,</span><br><span style="color: hsl(120, 100%, 40%);">+                     choices = ["TRX", "L1"], default = "TRX",</span><br><span style="color: hsl(120, 100%, 40%);">+                       help = "Where to send bursts (default %(default)s)")</span><br><span style="color: hsl(120, 100%, 40%);">+                trx_group.add_argument("-o", "--output-file",</span><br><span style="color: hsl(120, 100%, 40%);">+                     dest = "output_file", type = str,</span><br><span style="color: hsl(120, 100%, 40%);">+                   help = "Write bursts to a capture file")</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                  elif o in ("-o", "--output-file"):</span><br><span style="color: hsl(0, 100%, 40%);">-                          self.output_file = v</span><br><span style="color: hsl(0, 100%, 40%);">-                    elif o in ("-m", "--conn-mode"):</span><br><span style="color: hsl(0, 100%, 40%);">-                            self.conn_mode = v</span><br><span style="color: hsl(0, 100%, 40%);">-                      elif o in ("-r", "--remote-addr"):</span><br><span style="color: hsl(0, 100%, 40%);">-                          self.remote_addr = v</span><br><span style="color: hsl(0, 100%, 40%);">-                    elif o in ("-b", "--bind-addr"):</span><br><span style="color: hsl(0, 100%, 40%);">-                            self.bind_addr = v</span><br><span style="color: hsl(0, 100%, 40%);">-                      elif o in ("-p", "--base-port"):</span><br><span style="color: hsl(0, 100%, 40%);">-                            self.base_port = int(v)</span><br><span style="color: hsl(120, 100%, 40%);">+               bg_group = parser.add_argument_group("Burst generation")</span><br><span style="color: hsl(120, 100%, 40%);">+            bg_group.add_argument("-B", "--burst-type",</span><br><span style="color: hsl(120, 100%, 40%);">+                       dest = "burst_type", type = str,</span><br><span style="color: hsl(120, 100%, 40%);">+                    choices = ["NB", "FB", "SB", "AB"], default = "NB",</span><br><span style="color: hsl(120, 100%, 40%);">+                 help = "Random burst type (default %(default)s)")</span><br><span style="color: hsl(120, 100%, 40%);">+           bg_group.add_argument("-c", "--burst-count", metavar = "N",</span><br><span style="color: hsl(120, 100%, 40%);">+                     dest = "burst_count", type = int, default = 1,</span><br><span style="color: hsl(120, 100%, 40%);">+                      help = "How many bursts to send (default %(default)s)")</span><br><span style="color: hsl(120, 100%, 40%);">+             bg_group.add_argument("-f", "--frame-number", metavar = "FN",</span><br><span style="color: hsl(120, 100%, 40%);">+                   dest = "tdma_fn", type = int,</span><br><span style="color: hsl(120, 100%, 40%);">+                       help = "Set TDMA frame number (default random)")</span><br><span style="color: hsl(120, 100%, 40%);">+            bg_group.add_argument("-t", "--timeslot", metavar = "TN",</span><br><span style="color: hsl(120, 100%, 40%);">+                       dest = "tdma_tn", type = int, choices = range(0, 8),</span><br><span style="color: hsl(120, 100%, 40%);">+                        help = "Set TDMA timeslot (default random)")</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                      elif o in ("-B", "--burst-type"):</span><br><span style="color: hsl(0, 100%, 40%);">-                           self.burst_type = v</span><br><span style="color: hsl(0, 100%, 40%);">-                     elif o in ("-c", "--burst-count"):</span><br><span style="color: hsl(0, 100%, 40%);">-                          self.burst_count = int(v)</span><br><span style="color: hsl(0, 100%, 40%);">-                       elif o in ("-f", "--frame-number"):</span><br><span style="color: hsl(0, 100%, 40%);">-                         self.fn = int(v)</span><br><span style="color: hsl(0, 100%, 40%);">-                        elif o in ("-t", "--timeslot"):</span><br><span style="color: hsl(0, 100%, 40%);">-                             self.tn = int(v)</span><br><span style="color: hsl(120, 100%, 40%);">+              bg_pwr_group = bg_group.add_mutually_exclusive_group()</span><br><span style="color: hsl(120, 100%, 40%);">+                bg_pwr_group.add_argument("--pwr", metavar = "dBm",</span><br><span style="color: hsl(120, 100%, 40%);">+                       dest = "pwr", type = int,</span><br><span style="color: hsl(120, 100%, 40%);">+                   help = "Set power level (default random)")</span><br><span style="color: hsl(120, 100%, 40%);">+          bg_pwr_group.add_argument("--rssi", metavar = "dBm",</span><br><span style="color: hsl(120, 100%, 40%);">+                      dest = "rssi", type = int,</span><br><span style="color: hsl(120, 100%, 40%);">+                  help = "Set RSSI (default random)")</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                       # Message specific header fields</span><br><span style="color: hsl(0, 100%, 40%);">-                        elif o == "--pwr":</span><br><span style="color: hsl(0, 100%, 40%);">-                            self.pwr = int(v)</span><br><span style="color: hsl(0, 100%, 40%);">-                       elif o == "--rssi":</span><br><span style="color: hsl(0, 100%, 40%);">-                           self.rssi = int(v)</span><br><span style="color: hsl(0, 100%, 40%);">-                      elif o == "--toa256":</span><br><span style="color: hsl(0, 100%, 40%);">-                         self.toa256 = int(v)</span><br><span style="color: hsl(0, 100%, 40%);">-                    elif o == "--toa":</span><br><span style="color: hsl(0, 100%, 40%);">-                            self.toa256 = int(float(v) * 256.0 + 0.5)</span><br><span style="color: hsl(120, 100%, 40%);">+             bg_toa_group = bg_group.add_mutually_exclusive_group()</span><br><span style="color: hsl(120, 100%, 40%);">+                bg_toa_group.add_argument("--toa",</span><br><span style="color: hsl(120, 100%, 40%);">+                  dest = "toa", type = int,</span><br><span style="color: hsl(120, 100%, 40%);">+                   help = "Set Timing of Arrival in symbols (default random)")</span><br><span style="color: hsl(120, 100%, 40%);">+         bg_toa_group.add_argument("--toa256",</span><br><span style="color: hsl(120, 100%, 40%);">+                       dest = "toa256", type = int,</span><br><span style="color: hsl(120, 100%, 40%);">+                        help = "Set Timing of Arrival in 1/256 symbol periods")</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   def check_argv(self):</span><br><span style="color: hsl(0, 100%, 40%);">-           # Check connection mode</span><br><span style="color: hsl(0, 100%, 40%);">-         if self.conn_mode not in ("TRX", "L1"):</span><br><span style="color: hsl(0, 100%, 40%);">-                     self.print_help("[!] Unknown connection type")</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%);">-             # Check connection mode</span><br><span style="color: hsl(0, 100%, 40%);">-         if self.burst_type not in ("NB", "FB", "SB", "AB"):</span><br><span style="color: hsl(0, 100%, 40%);">-                     self.print_help("[!] Unknown burst type")</span><br><span style="color: hsl(0, 100%, 40%);">-                     sys.exit(2)</span><br><span style="color: hsl(120, 100%, 40%);">+           return parser.parse_args()</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/12187">change 12187</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/12187"/><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: I7eb3f2e2713f1f97293bd47a2eae3b140f63fb59 </div>
<div style="display:none"> Gerrit-Change-Number: 12187 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Vadim Yanitskiy <axilirator@gmail.com> </div>